运行时更改变量类型
今天,我与我的学院面临挑战,我高高兴起,不知道如何实现它。 有没有办法来声明一个字符串,因为常量和负载事件可能使用反射来更改字符串为非常量从XML分配一个值,而不是再次将其更改为常量。运行时更改变量类型
而且所有的代码(常量到非常量)都应该存储在一个字符串中,并且在类型改变之前加载时,它应该被解密并注入到应用程序中。
例如:
private const String RegNumber = "";
//Change RegNumber to Writable String
//Change RegNumber value
//Than Change RegNumber back to const again
PS:请抱歉,但我不知道从哪里开始,这里显示了一些代码。
你不能将它声明为const
但你可以声明作为static readonly
:
private static readonly string Foo = ReadValueFromAssembly();
static string ReadValueFromAssembly()
{
// Perform your logic and return the string here
}
会是你所需要的一切? [...]代码应该被解密并注入到应用程序中,但是你可以使上述方法做任何你需要的东西来正常运行,这并不是很清楚。
作为一个侧面说明,在像这样的初始化工具中做大量工作通常是一个糟糕的主意。
编辑:您可以将代码存储为字符串,使用CSharpCodeProvider
在执行时编译它,然后执行编译的代码。我在"Snippy"中有一个这样的例子,我用它作为编译片段的快速工具。
因此,在运行期间无法将常量更改为非常量? – Burimi
@Cody:如果你可以初始化它到正确的值开始,为什么你会*要*? –
我相信它只是一个编程挑战而不是严肃的代码.... –
这是可行的。见
如何使用C#编译器
http://support.microsoft.com/kb/304655
你可以写在一个字符串的代码,并使用上述文章中提到的API编程编译代码编译。
我以前没有这样做,但它应该给你一个关于如何开始的想法。
而且看,
它甚至可能在运行时不存在,编译器可能已经用它们的字面值取代了它的所有用法(事实上,它可能有,尽管我认为它不是标准所要求的)。
所以不,我不明白这怎么可能。
非常有趣 –
这个问题没有任何意义。请重新说明。 – cdhowie
@Jason请再读一遍,告诉我你不懂什么! – Burimi