ninject を使用して、特定のジェネリック型のすべてのインスタンスをクラスに注入できるようにしたいと考えています。たとえば、次のような形式のカスタム エクストラクタが多数あります。
public interface IExtract<TEntity>
{
TEntity ExtractFrom(MyBulkExportedEntity exportedEntity);
}
そして、これらのエクストラクタのすべてのインスタンスを、ninject 複数バインディングを使用して、このファイルの処理を担当するクラスに注入したいと考えています。
すなわち
public class ProcessDataExtract
{
/*This isn't valid c# but demonstrates the intent of what i would like to do*/
public ProcessDataExtract(IEnumerable<IExtract<>> allExtractors)
{
}
public void Process(MyBulkExportedEntity exportedEntity)
{
/*loop through all of the extractors and pull relevant data from the object*/
}
}
過去に、カーネルに直接アクセスする管理クラス (IProvideExtractors) を使用してこれを実行しましたが、この方法が気に入らず、これを行うためのより良い方法を誰かが知っているかどうか疑問に思っていました。ninject 複数バインディングを使用すると、使用することに関心のあるすべてのインスタンスを取得できますkernel.GetAll(typeof(IExtract<>))