Высокий уровень: я пытаюсь создать консольное приложение (например, ConsoleApp.exe), которое может выполнять некоторую обработку для любой данной DLL, которая ссылается на определенный тип, определенный в ConsoleApp.exe.
Я решил, может бытьошибочно, что мне понадобится сопутствующая DLL для ConsoleApp, которая содержит тип или типы (например, ConsoleClass), на которые должны ссылаться произвольные библиотеки DLL.Для этого, поскольку я не знаю лучшего способа, у меня есть два проекта в решении ConsoleApp, один - библиотека классов (Proving ConsoleApp.dll), а другой - консольное приложение, которое ссылается на проект библиотеки классов.
Теперь я могу скопировать мой ConsoleApp.dll в другой относительно не связанный проект в отдельном решении (например, OtherApp.dll), сослаться на него и написать метод, который использует экземпляр ConsoleClass какпараметр.
Теперь, чтобы произвольно обработать этот файл OtherApp.dll, ConsoleApp.exe загружает эту сборку, создает соответствующий класс в этой сборке и затем вызывает соответствующий метод в этом экземпляре.Надеемся, что соответствующие строки ниже дают представление о том, как я это делаю:
Assembly.LoadFrom(path_to_OtherApp_dll);
...
var x = (dynamic)Activator.CreateInstance(type_inside_OtherApp_dll);
...
var instance = new ConsoleClass();
x.some_method_call(instance);
В конечном итоге это не удается.Кажется, это потому, что хотя два проекта (ConsoleApp.exe и OtherApp.dll) ссылаются на одну и ту же DLL для определения ConsoleClass, среда выполнения по-прежнему считает их разными типами.
Есть мысли?