tags:

views:

654

answers:

4

I want to use CodeDOM to both declare and initialize my static field in one statement. How can I do this?

// for example
public static int MyField = 5;

I can seem to figure out how to declare a static field, and I can set its value later, but I can't seem to get the above effect.

@lomaxx, Naw, I just want static. I don't want const. This value can change. I just wanted the simplicity of declaring and init'ing in one fell swoop. As if anything in the codedom world is simple. Every type name is 20+ characters long and you end up building these huge expression trees. Makes my eyes bug out. I'm only alive today thanks to resharper's reformatting.

+4  A: 

Once you create your CodeMemberField instance to represent the static field, you can assign the InitExpression property to the expression you want to use to populate the field.

Timothy Fries
+2  A: 

This post by Omer van Kloeten seems to do what you want. Notice that the output has the line:

private static Foo instance = new Foo();
Haacked
A: 

Sheesh, I never even noticed that InitExpression property! That's so simple I feel stupid. But thanks y'all!

Chris Farmer
A: 

I think what you want is a const rather than static. I assume what you want is the effect of having a static readonly which is why you always want the value to be 5.

In c# consts are treated exactly the same as a readonly static.

From the c# docs:

Even though constants are considered static members, a constant- declaration neither requires nor allows a static modifier.

lomaxx