System.CodeDom带参数的构造函数的Assignement语句

时间:2018-04-01 18:15:35

标签: c# codedom

我正在创建一个工具,允许用户使用UI创建某种程序。完成后,程序将生成C#代码并将其编译到外部控制台应用程序中。

但我对System.CodeDom命名空间缺乏经验,我用它来生成C#代码。现在这是我的问题。

我在dll中有一个类(用作框架)。我需要为该类的声明和赋值生成代码。该类在构造函数中有两个参数。一个布尔和一个字符串。我发现了如何做声明,但我不知道如何生成作业 如何为具有两个参数的构造函数的声明生成代码。

示例输出

CaseWindow window = new CaseWindow(false, customString);

customString将包含项目的一些参数,构造函数将初始化CaseWindow类。

更新
到目前为止我发现的是简单的声明。看起来像这样:

var declaration = new CodeVariableDeclarationStatement(typeof(CaseWindow), "window");

我没有真正为作业找到一些东西所以我正在尝试一些事情。目前它看起来像这样:

var assignement = new CodeAssignStatement(new CodeVariableReferenceExpression("window"), new CodeTypeReferenceExpression(typeof(CaseWindow).ToString()));

但当然,它不起作用。

1 个答案:

答案 0 :(得分:0)

好。我现在得到了答案。 要创建作业,我必须使用以下代码:

var assignement = new CodeAssignStatement(new CodeVariableReferenceExpression("window"), new CodeObjectCreateExpression("CaseWindow", new CodePrimitiveExpression(true), new CodePrimitiveExpression(jsonString)));

新的CodeAssignStatement 是实际生成作业的语句 new CodeVariableReferenceExpression 基本上会生成变量的名称。这是"窗口"在这种情况下,由声明代码生成 new CodeObjectCreateExpression 将生成新类实例的初始化。 (新对象)。其中第一个参数可以是类的字符串,也可以是类型的System.Type。如果忘记添加类所在的命名空间,则后面的选项将防止可能发生的错误。第二个参数是" param"将作为对象创建的参数生成的参数 new CodePrimitiveExpression 将生成为基本类型的值(string,bool,int等)。它需要一个参数,即值本身。

将所有这些放在一起将产生以下输出:

window = new Namespace.Of.Class.CaseWindow(true, "SOME JSON GOES HERE");