Ответ 1
Встроенный рефлекс-излучение здесь довольно ограничен; то, что вы хотите сделать, это сказать, что он использует определенную сборку mscorlib
, но проблема в том, что много отражения-излучения включает в себя передачу Type
вокруг, что делает это невероятно трудным. Наиболее прагматичным способом, который я нашел для решения этой проблемы, было переход на IKVM.Reflection.dll - часть IKVM.NET. Эта dll имеет очень преднамеренно тот же базовый API, что и Reflection.Emit, но вместо того, чтобы работать с встроенными объектами Type
, он работает против экземпляров IKVM, которые загружаются в концепцию Universe
. A Universe
может затем загрузить требуемую dll mscorlib и любые другие DLL, которые вам нужны.
Изменения для этого обычно просто изменяют операторы using
. Этот подход используется во всем protobuf-net (в частности, прекомпиляционном инструменте), позволяя не только разные версии, но и целые различные структуры. Хотите создать dll, который нацелен на Silverlight из обычного приложения .NET? Не проблема. Самый сложный бит (IMO) просто находит правильный mscorlib и поддерживающие файлы для загрузки в Universe
.
Смотрите мой блог Введите IKVM - или посмотрите примеры на IKVM, например Типы указателей функций.
Я могу предоставить дополнительную информацию по мере необходимости.