изменить сборку во время выполнения? - PullRequest
3 голосов
/ 09 июня 2010

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

Ответы [ 2 ]

3 голосов
/ 09 июня 2010

Вы можете использовать Mono Cecil для изменения сборки перед ее загрузкой.

Вы можете сохранить измененную сборку в байтовый массив, а затем вызвать Assembly.Load для загрузки байтового массива..

1 голос
/ 09 июня 2010

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

Это много работы, хотя. Вы можете получить помощь от такой среды, как Castle DynamicProxy , которая позволяет генерировать прокси для ваших классов во время выполнения. Таким образом, вы можете выполнить любой код до или после запуска исходных методов или полностью изменить методы, не вызывая исходный метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...