Позднее связывание - C#
Формулировка задачи:
Надо написать программу которая в папке Plugins просматривает все dll и вызывает метод Print в классах Plugin.
Как после загрузки dll
вызвать метод Print(), если он там вообще есть?
public class Plugin { public void Print() { Console.WriteLine("Запущен плагин."); } }
static void Main(string[] args) { Assembly assembly = null; DirectoryInfo plugins = new DirectoryInfo("Plugins"); FileInfo[] dllArray = plugins.GetFiles("*.dll"); foreach (FileInfo item in dllArray) { string dll = item.FullName; assembly = Assembly.LoadFile(dll); } Console.ReadKey(); }
assembly = Assembly.LoadFile(dll);
Решение задачи: «Позднее связывание»
textual
Листинг программы
try { object pl=assembly.GetType().InvokeMember("Plugin", BindingFlags.InvokeMethod, null,assembly, new object[] {}); pl.GetType().InvokeMember("Print", BindingFlags.InvokeMethod, null, pl, new object[] {}); } catch { //Либо класса "Plugin" либо метода "Print" нет }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д