今天我和我的学院面临挑战,我放弃了,不知道如何实现它。 有没有办法声明一个String,因为Constant和on Load Event可能使用Reflection将String更改为非Constant从XML赋值,而不是再次将其更改为Constant。
所有执行该操作的代码(常量到非常量)应该存储在字符串中,并且在类型更改之前加载时,它应该被解密并注入到应用程序中。
示例:
private const String RegNumber = "";
//Change RegNumber to Writable String
//Change RegNumber value
//Than Change RegNumber back to const again
PS:请抱歉,但我不知道从哪里开始,并在这里显示一些代码。
答案 0 :(得分:1)
您不能将其声明为const
,但可以将其声明为static readonly
:
private static readonly string Foo = ReadValueFromAssembly();
static string ReadValueFromAssembly()
{
// Perform your logic and return the string here
}
这会做你需要的一切吗?关于“应该解密并注入应用程序的代码”你的意思并不是很清楚,但是你可以让上面的方法做正常的事情。
作为旁注,在像这样的类型初始化器中做大量工作通常是个坏主意。
编辑:您可以将代码存储为字符串,使用CSharpCodeProvider
在执行时编译它,然后执行编译的代码。我在"Snippy"中有一个示例,我在深度中使用C#作为编译片段的快速工具。
答案 1 :(得分:0)
理论上是可能的。见
如何使用C#编译器以编程方式编译代码
http://support.microsoft.com/kb/304655
您可以使用上面文章中提到的API编写代码并编译。
我之前没有这样做,但它应该让你知道如何开始。
另见,
答案 2 :(得分:0)
它甚至可能在运行时不存在,编译器可能只是用它们的文字值替换它的所有用法(事实上,它可能有,但我不认为它是标准所要求的。)
所以不,我不明白这是怎么可能的。