2012-10-13 56 views
5

我需要初始化我的对象象下面这样:如何用CodeDOM初始化对象?

var obj = new EduBranch { 
    Id = model.Id, 
    WorklevelId = model.WorklevelId, 
    EdulevelId = model.EdulevelId, 
    Title = model.Title, 
    StartEduYearId = model.StartEduYearId, 
    EndEduYearId = model.EndEduYearId, 
}; 

但在CodeDOM的我只能找到:

var objectCreate1 = new CodeObjectCreateExpression("EduBranch", 
    new CodeExpression[]{}); 

,这是用括号来初始化,而不是括号。 是否有CodeDOM方法? (我已经让我的代码使用stringBuilder,但我正在寻找CodeDOM方法)谢谢

回答

5

CodeDom目前不支持object initializers(或集合初始值设定程序)。

由于其他技术(例如T4 templates),CodeDom多年来已经失宠。

这就是说,因为该行:

var obj = new EduBranch { 
    Id = model.Id, 
    WorklevelId = model.WorklevelId, 
    EdulevelId = model.EdulevelId, 
    Title = model.Title, 
    StartEduYearId = model.StartEduYearId, 
    EndEduYearId = model.EndEduYearId, 
}; 

实际上是一样的:

var obj = new EduBranch(); 

obj.Id = model.Id; 
obj.WorklevelId = model.WorklevelId; 
obj.EdulevelId = model.EdulevelId; 
obj.Title = model.Title; 
obj.StartEduYearId = model.StartEduYearId; 
obj.EndEduYearId = model.EndEduYearId; 

可以使用的CodeDOM生成以上,并获得相同的

+0

T4是代码生成傻瓜。是的,它适用于小型,快速的项目,但与CodeDOM相比,仍然无法替代大型Web服务或企业应用程序。我唯一抱怨的是缺乏对泛型类型的支持。除此之外,当你有真正的工作要做时,没有什么可替代的。 –