2008-08-27 39 views
4

我想使用CodeDOM聲明和初始化我的靜態字段在一個語句。我怎樣才能做到這一點?使用.NET CodeDOM聲明和初始化一個語句中的字段

// for example 
public static int MyField = 5; 

我似乎可以找出如何聲明靜態字段,以後我可以設置的值,但我似乎無法得到上述效果。

@lomaxx, 吶,我只是想靜態。我不想要const。這個值可以改變。我只是想要一舉宣佈和初始化的簡單性。就好像在codedom世界裏的任何事情都很簡單。每個類型的名稱長度超過20個字符,最終構建這些巨大的表達樹。讓我的眼睛出錯。由於resharper的重新格式化,我今天才活着。

回答

8

創建CodeMemberField實例以表示靜態字段後,可以將InitExpression屬性分配給要用於填充該字段的表達式。

1

This post通過Omer van Kloeten似乎做你想做的。請注意,輸出有以下行:

private static Foo instance = new Foo(); 
+0

鏈接已死亡。這是一個新的:https://msdn.microsoft.com/en-us/library/system.codedom.codememberfield.initexpression(v=vs.110).aspx – makhdumi 2017-01-23 23:32:39

0

我想你想要的是一個常量而不是靜態的。我假設你想要的是具有靜態只讀的效果,這就是爲什麼你總是希望該值爲5.

在c#中consts的處理方式與readonly static完全相同。

From the c# docs

即使常數被認爲 靜態成員,但恆 聲明既不要求也 允許static修飾符。