Как использовать отражение для создания "машины отражения"

ОК, так что заголовок немного засасывает, но я не мог придумать ничего лучшего (может быть, кто-то еще может?).

Итак, у меня есть несколько вопросов по теме. Я хочу создать программу, которая может взять объект и использовать отражение, чтобы перечислить все его свойства, методы, конструкторы и т.д. Затем я могу управлять этими объектами во время выполнения, чтобы тестировать, отлаживать и точно определять, что некоторые из моих классов/программы выполняются во время их работы (некоторые из них будут службами Windows и, возможно, установлены на машине, а не работают в отладке от VS).

Итак, я бы предоставил ссылку на программу, которая с локальной машины (только) эта программа могла получить экземпляр основного объекта и, следовательно, увидеть все подчиненные объекты, запущенные в нем. (для обеспечения безопасности, возможно, потребуется запустить программу с помощью arg, чтобы открыть этот крючок).

"Машина отражения" позволит манипулировать временем и опросом.

Возможно ли это?

Будет ли программа предоставлять крючок или может ли "машина отражения" взять EXE и (если бы она знала все классы, которые она использовала), создать объект для использования?

Я знаю, что вы можете импортировать DLL во время выполнения, чтобы он знал о всех классах, но можете ли вы импортировать отдельные классы? И.Е. Скажем, у меня есть проект "Y", который не компилируется в DLL, но я хочу использовать "машину отражения" на нем, могу ли я указать на этот каталог и захватить файлы, чтобы иметь возможность ссылаться на эти классы?

EDIT: Мне бы хотелось попробовать и разработать его самостоятельно, но у меня уже есть длинный список проектов, которые я хотел бы сделать и уже начал. Зачем изобретать колесо, когда уже есть отличный выбор.

Ответ 1

Попробуйте найти Crack.NET. Он используется для обработки и опроса времени выполнения в WPF/WinForms, но источник доступен и может быть хорошим началом, если он уже не отвечает вашим потребностям.

Ответ 2

Звучит так, как будто Corneliu Tusnea Hawkeye может быть близок к тому, что вы ищете для опроса объектов/свойств/etc во время выполнения, Он называет его редактором объектов .NET Runtime. Я не уверен, что главная страница, которую я связал выше, или CodePlex project - лучшее место для начала.

Это немного устарело, я думаю, но там более ранняя версия его в CodeProject, где вы можете увидеть исходный код как и что он сделал.

Ответ 3

Powershell фактически делает почти все это, если я правильно понимаю, что вы говорите.

Ответ 4

См. этот ответ о том, как создать механизм ".

Все, что вам нужно сделать, это отказаться от этого набора машин в вашем наборе доступных я считаю, что библиотеки времени исполнения и делают то, что вы хотите. (Это может быть не так просто, как я сделал это на практике).

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