2010-04-03 2 views
1

Прежде чем начать, позвольте мне рассказать о своем опыте: у меня есть опыт работы с C# .NET, веб-сервисами, частью XML и несколькими другими. Отражение - это что-то новое для меня, хотя я много читал об этом и опробовал некоторый экспериментальный код, но ничего не сделал с помощью отражения.Сохранение типов, сгенерированных с помощью Reflection.Emit как файл кода (.cs) вместо сохранения его в файлах .dll

Я проверил many examples, как мы можем создать Тип во время выполнения, а затем сохраняться в файлах сборки (DLL). Из всех примеров, которые я видел, это сохранение созданных типов в DLL-файлах вместо файла кода. Разве нет способа создать код из отражения?

Мне нужно создать файл кода, так как я хочу распространять код вместо скомпилированных сборок. То, что я хочу сделать, это что-то вроде xsd.exe, либо выплевывает .dll, либо файл кода (на любом языке).

Не существует ли способ создания файла кода, так как большинство из места, где я могу найти

AssemblyBuilder ab = System.AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Save); 

, а затем, наконец,

ab.Save("QuoteOfTheDay.dll"); 

ответ

4

В .NET Framework отсутствует дизассемблер. Вы можете использовать Reflector для преобразования IL, который вы выбрали, на одном из языков исходного кода, который он поддерживает. Не удивительно, что это будет работать без проблем, Reflector был разработан для преобразования кода, который был сгенерирован компилятором обратно в исходный код. Компиляторы имеют тенденцию быть консервативными в отношении ИЛ, которые они генерируют, в отличие от подхода, который предлагает System.Reflection.Emit.

Если вам нужен исходный код, тогда вам лучше всего создать его в первую очередь. Используйте System.CodeDom. Это то, что использует System.Xml.Serialization.

 Смежные вопросы

  • Нет связанных вопросов^_^