使用.NET CodeDOM在一个语句中声明和初始化字段

时间:2020-03-05 18:43:39  来源:igfitidea点击:

我想使用CodeDOM在一个语句中声明和初始化我的静态字段。我怎样才能做到这一点?

// for example
public static int MyField = 5;

我似乎可以弄清楚如何声明一个静态字段,以后可以设置其值,但似乎无法获得上述效果。

@lomaxx,
w,我只想静态。我不要const。此值可以更改。我只是想一口气声明和初始化的简单性。似乎在密码世界中,任何事情都很简单。每个类型名称的长度都超过20个字符,最终我们将构建这些巨大的表达式树。使我的眼睛虫。今天我还活着,这要归功于Resharper的重新格式化。

解决方案

回答

创建代表静态字段的CodeMemberField实例后,可以将InitExpression属性分配给要用于填充字段的表达式。

回答

Omer van Kloeten的这个帖子似乎可以满足要求。请注意,输出中包含以下行:

private static Foo instance = new Foo();

回答

我认为我们想要的是const而不是static。我假设我们想要的是具有静态只读的效果,这就是为什么我们始终希望该值为5的原因。

在cconst中,将其与只读静态变量完全一样。

从cdocs:

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