日期:2014-05-20  浏览次数:20851 次

熟悉.net CodeDom的请进
如何通过CodeDom生成如下代码:

Button btn = new Button() { Text = "OK",Name = "btnOK"};

谢谢。

------解决方案--------------------
很遗憾,直到.NET Framework 4.0,CodeDom都不支持这种称作Object Initializer的语法。
------解决方案--------------------
一个解决办法是用CodeSnippetExpression。CodeSnippetExpression可以包含任意形式的自定义代码。

var btnDecl = new CodeVariableDeclarationStatement();
var buttonTypeRef = new CodeTypeReference("Button");
var createExp = new CodeSnippetExpression("new Button() { Text = \"OK\",Name = \"btnOK\" }");

btnDecl.Name = "btn";
btnDecl.Type = buttonTypeRef;
btnDecl.InitExpression = createExp;