Позднее связывание - C#

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

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

Надо написать программу которая в папке Plugins просматривает все dll и вызывает метод Print в классах Plugin.
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();
        }
Как после загрузки dll
assembly = Assembly.LoadFile(dll);
вызвать метод Print(), если он там вообще есть?

Решение задачи: «Позднее связывание»

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" нет 
 }

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


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

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

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