Verwenden von .NET CodeDOM zum Deklarieren und Initialisieren eines Felds in einer Anweisung

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

  •  09-06-2019
  •  | 
  •  

Frage

Ich möchte CodeDOM verwenden, um mein statisches Feld in einer Anweisung zu deklarieren und zu initialisieren.Wie kann ich das machen?

// for example
public static int MyField = 5;

Ich kann anscheinend herausfinden, wie man ein statisches Feld deklariert, und ich kann seinen Wert später festlegen, aber ich kann anscheinend nicht den oben genannten Effekt erzielen.

@lomaxx, naw, ich will nur statisch.Ich möchte keine Konstante.Dieser Wert kann sich ändern.Ich wollte nur die Einfachheit der Deklaration und Initiierung auf einen Schlag.Als ob irgendetwas in der Codedom-Welt einfach wäre.Jeder Typname ist mehr als 20 Zeichen lang und Sie erstellen am Ende diese riesigen Ausdrucksbäume.Lässt mir die Augen ausfransen.Ich bin heute nur noch am Leben, dank der Neuformatierung von Resharper.

War es hilfreich?

Lösung

Sobald Sie Ihre CodeMemberField-Instanz zur Darstellung des statischen Felds erstellt haben, können Sie die InitExpression-Eigenschaft dem Ausdruck zuweisen, den Sie zum Füllen des Felds verwenden möchten.

Andere Tipps

Dieser Beitrag von Omer van Kloeten scheint zu tun, was Sie wollen.Beachten Sie, dass die Ausgabe die folgende Zeile enthält:

private static Foo instance = new Foo();

Ich denke, was Sie wollen, ist eher eine Konstante als eine statische.Ich gehe davon aus, dass Sie den Effekt eines statischen Schreibschutzes erzielen möchten, weshalb der Wert immer 5 sein soll.

In c# werden Konstanten genauso behandelt wie schreibgeschützte statische Konstanten.

Aus den C#-Dokumenten:

Obwohl Konstanten als statische Mitglieder angesehen werden, erfordert oder erlaubt eine konstante Erklärung weder einen statischen Modifikator.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top