Utilizzo di .NET CodeDOM per dichiarare e inizializzare un campo in un'istruzione

StackOverflow https://stackoverflow.com/questions/29531

  •  09-06-2019
  •  | 
  •  

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.

È stato utile?

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.

Dai documenti C#:

Anche se le costanti sono considerate membri statici, una dichiarazione costante non richiede né consente un modificatore statico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top