2012-02-06 5 views
0

IOCコンテナを使用していますが、私は従来のコードで作業しています。CreateInstanceの負荷がどこにあっても、そのクラスで完了しました。返信リスト<T>のIOCからのインスタンス化されたクラス

私は現在使用されている方法は、ちょうどずに自分のことをやって続けることができますので、それはインスタンス化したクラスのリストを返すためにIOCのコンテナを得ることができる方法はありAutofacは、アセンブリをスキャンしますたとえばCreateInstance

/以下のようなコードでアセンブリのセットを作成しましたが、作成したクラスのList<T>を返すことができるかどうかは不思議でした。

var dataAccess = Assembly.GetExecutingAssembly(); 

builder.RegisterAssemblyTypes(dataAccess) 
    .Where(t => t.Name.EndsWith("Repository")) 
    .AsImplementedInterfaces(); 

UPDATE:私はちょうどその上でIOCが使用しますが、クラスがインスタンス化されているかどうかで私に伝えるために、上記の機能を必要とすることを決定してい

+0

を理解するためにそれについて読むことができますが、いくつかのコードを投稿してくださいだろうか? –

+0

わかりません。既にIOCがあり、実行時にインスタンス化されたことを知りたい場合や、既存の実装をIOCに置き換える場合は、いくつかのサンプルコードを提供できますか? –

答えて

0

あなたは上記の構文は限りYourClassTypeを派生するすべてのクラスはそれとして登録されてきたように動作

var classes = _container.Resolve<IEnumerable<YourClassType>>().ToList(); 

のようなものを意味します。

_container.Resolve<IEnumerable<T>>()は、Tを実装するすべてのクラスを解決するようにautofacに指示します。

+0

Tは基本型ですか? 1つのクラスを継承するクラスがたくさんある場合、基本クラスを指定できますか? – Jon

1

タグのうちの1つは、Autofacを使用していると言います。だから私はあなたがIContainerにアクセスできると信じています。 Autofacは、作成するすべてのオブジェクトのインスタンスを追跡します。それが持っている範囲を見てください。私はAutofacについての良いブログを見つけたドキュメントhttp://code.google.com/p/autofac/wiki/OwnedInstances

を読む詳細については、多分uがLifeTimeScopesなど http://nblumhardt.com/2011/01/an-autofac-lifetime-primer/

関連する問題