Ninject Внедрение всех экземпляров универсального типа с помощью ninject

Я хотел бы иметь возможность использовать 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<>))

9
задан Not loved Not their people 7 June 2012 в 20:48
поделиться