О, правда, MarshalByRefObject.

у утилиту для себя, отчасти как упражнение в изучении C # Reflection, а отчасти потому, что я на самом деле хочу получить полученный инструмент для собственного использования.

В основном я нацеливаю приложение на сборку и выбираю определенный класс, из которого можно выбрать свойства, которые должны быть включены в экспортированную форму HTML в виде полей. Затем эта форма будет использоваться в моем приложении ASP.NET MVC как начало представления.

Поскольку я использую объекты Subsonic для приложений, в которых я хочу их использовать, это должно быть разумно, и я решил, что, желая включить такие вещи, как различный вывод HTML в зависимости от типа данных, Reflection был способом сделать это.

Однако то, что я ищу, кажется неуловимым. Я пытаюсь взять DLL / EXE, выбранный через OpenFileDialog, в качестве отправной точки и загрузить его:

String FilePath = Path.GetDirectoryName(FileName);
System.Reflection.Assembly o = System.Reflection.Assembly.LoadFile(FileName);

Это работает нормально, но поскольку объекты, генерируемые Subsonic, на самом деле полны типов объектов, определенных в Subsonic.dll и т. Д., Эти зависимые объекты не загружаются. Войти:

AssemblyName[] ReferencedAssemblies = o.GetReferencedAssemblies();

Это тоже содержит именно то, что я ожидал бы. Однако я пытаюсь понять, как загрузить эти сборки, чтобы мое копание в мои объекты работало правильно. Я понимаю, что если бы эти сборки находились в GAC или в каталоге запущенного исполняемого файла, я мог бы просто загрузить их по их имени, но вряд ли это относится к этому варианту использования, и это мой основной вариант использования.

Итак, к чему это сводится, так это как загрузить данную сборку и все ее произвольные сборки, начиная с имени файла и получая в результате полностью просматриваемое отражение дерево типов, свойств, методов и т. Д.

Я знаю, что такие инструменты, как Reflector, делают это, я просто не могу найти синтаксис для этого.

Ответы на вопрос(2)

Ваш ответ на вопрос