2011-09-06 125 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

它甚至可能在运行时不存在,编译器可能已经用它们的字面值取代了它的所有用法(事实上,它可能有,尽管我认为它不是标准所要求的)。

所以不,我不明白这怎么可能。