Utilisation de .NET CodeDOM pour déclarer et initialiser un champ dans une seule instruction

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

  •  09-06-2019
  •  | 
  •  

Question

Je souhaite utiliser CodeDOM pour déclarer et initialiser mon champ statique dans une seule instruction.Comment puis-je faire ceci?

// for example
public static int MyField = 5;

J'arrive à comprendre comment déclarer un champ statique et je peux définir sa valeur plus tard, mais je n'arrive pas à obtenir l'effet ci-dessus.

@lomaxx, naw, je veux juste statique.Je ne veux pas de const.Cette valeur peut changer.Je voulais juste la simplicité de déclarer et d'initier d'un seul coup.Comme si tout était simple dans le monde du code.Chaque nom de type comporte plus de 20 caractères et vous finissez par créer ces énormes arbres d'expression.Ça me fait crever les yeux.Je ne suis en vie aujourd'hui que grâce au reformatage de Resharper.

Était-ce utile?

La solution

Une fois que vous avez créé votre instance CodeMemberField pour représenter le champ statique, vous pouvez attribuer la propriété InitExpression à l'expression que vous souhaitez utiliser pour remplir le champ.

Autres conseils

Ce post par Omer van Kloeten semble faire ce que vous voulez.Notez que la sortie contient la ligne :

private static Foo instance = new Foo();

Je pense que ce que vous voulez, c'est un const plutôt que statique.Je suppose que ce que vous voulez, c'est l'effet d'une lecture seule statique, c'est pourquoi vous voulez toujours que la valeur soit 5.

En C#, les consts sont traités exactement de la même manière qu'un statique en lecture seule.

À partir de la documentation C#:

Même si les constantes sont considérées comme des membres statiques, une déclaration constante ne nécessite ni ne permet un modificateur statique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top