Переписывать методы MEF ExportFactory для использования обобщений? - PullRequest
0 голосов
/ 02 мая 2019

В моей программе я использую 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

...