2012-10-13 72 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服務或企業應用程序。我唯一抱怨的是缺乏對泛型類型的支持。除此之外,當你有真正的工作要做時,沒有什麼可替代的。 –