Ответ 1
Отъезд Использование CodeDOM для генерации CSharp (С#) и кода VB
Может кто-то рекомендовать простой генератор кода С#. Я просто смотрю что-то с помощью таких методов, как:
GenClass = CreateNewClass(AccessModifier,Name......)
GenClass.Add(new Method(AccessModifier,RetType,Name....){[email protected]"....."}
GenClass.Add(new Property(AccessModifier,Type, Name....)
........... и т.д.
и после создания всех классов\методов и других членов мы вызываем функцию генерации кода (где мы можем указать некоторые параметры)
Есть ли такой генератор кода с открытым исходным кодом?
Отъезд Использование CodeDOM для генерации CSharp (С#) и кода VB
T4 или Инструментарий преобразования шаблонов текста, возможно, стоит изучить.
Другой вариант - создать собственный простой генератор, который содержит функции, более подходящие для вашей ситуации, чем CodeDOM. В недавнем проекте генерации кода, что то, что я сделал, однако я инкапсулировал генерацию кода, чтобы сделать возможным позднее переход к CodeDOM.
Возможно, вам захочется посмотреть csscript, который зависит от CodeDOM.
Он позволяет писать такие вещи, как:
var PrintSum = CSScript.LoadMethod(
@"public static void PrintSum(int a, int b)
{
Console.WriteLine((a+b));
}")
.GetStaticMethod();
PrintSum(1, 2);
Обязательно прочитайте документ, он довольно подробно, и вы обнаружите, что можете сделать гораздо больше, чем то, что я только что скопировал раньше.
Если вы хотите, чтобы иметь возможность генерировать класс, заданный какой-либо третейской строкой, содержащей код С#, вам нужен компилятор С#. На данный момент инфраструктура .Net не поставляется с компилятором, что вы можете передавать фрагменты С# и получать скомпилированный код обратно. Если у вас есть более конкретные потребности, вы должны точно указать, что вы хотите сделать.
Поскольку вы явно ищете генератор кода с открытым исходным кодом, я предлагаю MyGeneration. Другой подход, основанный на шаблонах (который не является тем, что вы ищете, так как хочет "GenClass.Add...." вместо синтаксиса) будет Инструменты Codesmith это действительно мощный, но закрытый источник.
взгляните на мой генератор с открытым исходным кодом http://code.google.com/p/magicapps/