.NET 4.x Передать тип в качестве параметра - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток уважаемые! Заинтересовала тема плагинов, и в соседней теме нашел вот такой код:
Листинг программы
  1. var asm = Assembly.LoadFile(@"pathToDll");
  2. var plugin = Activator.CreateInstance(asm.GetTypes().First(t => t.GetInterfaces().Contains(typeof(IPlugin)))) as IPlugin;
  3. Console.WriteLine(plugin.Func(1, 2));
Всё отлично работает, но тут у меня возник другой вопрос... Как создать универсальную функцию для загрузки плагинов, которая в качестве параметра принимала бы тип (интерфейс) и загружала бы плагин соотв. типа? Например так:
Листинг программы
  1. public void Load(var TYPE) {
  2. var asm = Assembly.LoadFile(@"pathToDll");
  3. var plugin = Activator.CreateInstance(asm.GetTypes().First(t => t.GetInterfaces().Contains(typeof(TYPE)))) as TYPE;
  4. Console.WriteLine(plugin.Func(1, 2));
  5. }
  6. Load(IPlugin);
Как-то примерно так... Код приведён исключительно в качестве примера, условен и не работает.

Решение задачи: «.NET 4.x Передать тип в качестве параметра»

textual
Листинг программы
  1. public void Load<TYPE>() {
  2.     var asm = Assembly.LoadFile(@"pathToDll");
  3.     var plugin = Activator.CreateInstance(asm.GetTypes().First(t => t.GetInterfaces().Contains(typeof(TYPE)))) as TYPE;
  4.     Console.WriteLine(plugin.Func(1, 2));
  5. }
  6.  
  7. Load<IPlugin>();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы