.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>();