2012-10-13 9 views
5

Ho bisogno di inizializzare il mio oggetto come il seguente:Come inizializzare l'oggetto con CodeDOM?

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

ma in CodeDOM ho potuto trovare solo:

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

e questo sta usando parentesi per inizializzare invece di parentesi. esiste un approccio CodeDOM per questo? (Ho già fatto il mio codice usando stringBuilder ma sto cercando un approccio CodeDOM) grazie

risposta

5

Il CodeDom attualmente non supporta object initializers (o inizializzatori di raccolta, per quella materia).

Il CodeDom è caduto in disgrazia nel corso degli anni, a causa di altre tecnologie (T4 templates, ad esempio).

Detto questo, perché questa linea:

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

è effettivamente la stessa:

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; 

È possibile utilizzare il CodeDOM per generare quanto sopra, e ottenere lo stesso

+0

T4 è generazione di codice per manichini. Sì, ha il posto per progetti piccoli e veloci, ma non c'è ancora alcun sostituto per un servizio Web su larga scala o un'applicazione aziendale rispetto a CodeDOM. L'unica lamentela che ho su di esso è la mancanza di supporto per i tipi generici. Oltre a questo, non c'è nessun sostituto quando hai un vero lavoro da fare. –