Utilizzo di .NET CodeDOM per dichiarare e inizializzare un campo in un'istruzione
Domanda
Voglio utilizzare CodeDOM sia per dichiarare che per inizializzare il mio campo statico in un'unica istruzione.Come posso fare questo?
// for example
public static int MyField = 5;
Mi sembra di capire come dichiarare un campo statico e di impostarne il valore in un secondo momento, ma non riesco a ottenere l'effetto sopra descritto.
@lomaxx, naw, voglio solo statico.Non voglio const.Questo valore può cambiare.Volevo solo la semplicità di dichiarare e avviare in un colpo solo.Come se nel mondo del codice tutto fosse semplice.Ogni nome di tipo è lungo più di 20 caratteri e finisci per costruire questi enormi alberi di espressione.Mi fa strabuzzare gli occhi.Sono vivo solo oggi grazie alla riformattazione di Resharper.
Soluzione
Dopo aver creato l'istanza CodeMemberField per rappresentare il campo statico, puoi assegnare la proprietà InitExpression all'espressione che desideri utilizzare per popolare il campo.
Altri suggerimenti
Questo post di Omer van Kloeten sembra fare quello che vuoi.Si noti che l'output ha la riga:
private static Foo instance = new Foo();
Penso che quello che vuoi sia una costante piuttosto che statica.Presumo che quello che vuoi sia l'effetto di avere una sola lettura statica, motivo per cui vuoi sempre che il valore sia 5.
In C# i const vengono trattati esattamente come uno statico di sola lettura.
Anche se le costanti sono considerate membri statici, una dichiarazione costante non richiede né consente un modificatore statico.