2012-10-13 8 views
5

muszę zainicjować mojego obiektu jak poniżej:Jak zainicjować obiekt za pomocą CodeDOM?

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

ale w CodeDOM mogłem tylko znaleźć:

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

a to za pomocą nawiasów zainicjować zamiast nawiasów. czy istnieje podejście CodeDOM do tego? (Już tworzę kod za pomocą stringBuilder, ale szukam podejścia CodeDOM) dziękuję

Odpowiedz

5

CodeDom obecnie nie obsługuje object initializers (lub inicjatorów kolekcji, jeśli o to chodzi).

CodeDom z biegiem lat stracił swoją pozycję dzięki innym technologiom (na przykład T4 templates).

To powiedziawszy, bo tej linii:

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

jest faktycznie taki sam jak:

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; 

Można użyć CodeDOM do generowania wyżej i uzyskać taki sam

+0

T4 jest generowanie kodu dla manekinów. Tak, ma on swoje miejsce w przypadku małych, szybkich projektów, ale wciąż nie ma możliwości zastąpienia dużej usługi sieciowej lub aplikacji korporacyjnej niż CodeDOM. Jedyny zarzut, jaki mam na ten temat, to brak wsparcia dla typów ogólnych. Poza tym, nie ma po prostu substytutu, gdy masz prawdziwą pracę do wykonania. –

Powiązane problemy