2011-09-06 145 views
0

今天,我與我的學院面臨挑戰,我高高興起,不知道如何實現它。 有沒有辦法來聲明一個字符串,因爲常量和負載事件可能使用反射來更改字符串爲非常量從XML分配一個值,而不是再次將其更改爲常量。運行時更改變量類型

而且所有的代碼(常量到非常量)都應該存儲在一個字符串中,並且在類型改變之前加載時,它應該被解密並注入到應用程序中。

例如:

private const String RegNumber = ""; 
//Change RegNumber to Writable String 
//Change RegNumber value 
//Than Change RegNumber back to const again 

PS:請抱歉,但我不知道從哪裏開始,這裏顯示了一些代碼。

+2

非常有趣 –

+0

這個問題沒有任何意義。請重新說明。 – cdhowie

+1

@Jason請再讀一遍,告訴我你不懂什麼! – Burimi

回答

1

你不能將它聲明爲const但你可以聲明作爲static readonly

private static readonly string Foo = ReadValueFromAssembly(); 

static string ReadValueFromAssembly() 
{ 
    // Perform your logic and return the string here 
} 

會是你所需要的一切? [...]代碼應該被解密並注入到應用程序中,但是你可以使上述方法做任何你需要的東西來正常運行,這並不是很清楚。

作爲一個側面說明,在像這樣的初始化工具中做大量工作通常是一個糟糕的主意。

編輯:您可以將代碼存儲爲字符串,使用CSharpCodeProvider在執行時編譯它,然後執行編譯的代碼。我在"Snippy"中有一個這樣的例子,我用它作爲編譯片段的快速工具。

+0

因此,在運行期間無法將常量更改爲非常量? – Burimi

+0

@Cody:如果你可以初始化它到正確的值開始,爲什麼你會*要*? –

+0

我相信它只是一個編程挑戰而不是嚴肅的代碼.... –

0

它甚至可能在運行時不存在,編譯器可能已經用它們的字面值取代了它的所有用法(事實上,它可能有,儘管我認爲它不是標準所要求的)。

所以不,我不明白這怎麼可能。