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