В моей программе я использую MEF для создания плагина, который может читать из библиотек dll во время выполнения и выбирать конкретные реализации, когда выбран параметр.
[ImportMany]
public IEnumerable<ExportFactory<IMyInterface, Dictionary<string, object>>>
MyFactories { get; set; }
public IMyInterface GetImplementation()
{
try
{
ExportLifetimeContext<IMyInterface> selectedFactory =
MyFactories.Single(e => (string) e.Metadata["Name"] == _selectedName).CreateExport();
return selectedFactory.Value;
}
catch (InvalidOperationException e)
{
Console.WriteLine(e);
throw;
}
}
Он работает как есть, но я хотел бы сделать то же самое для другого интерфейса.Самый простой способ - скопировать \ вставить и изменить IMyInterface на IAnotherInterface, но я пытался выяснить, могу ли я переписать это, чтобы я мог передать тип интерфейса \ string в GetImplentatuin.Я думаю, что я должен использовать дженерики, но не смог понять, как.Я их пока не очень понимаю.I