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

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

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

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

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

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

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


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

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

13   голосов , оценка 4.077 из 5
Похожие ответы