在运行时更改变量类型

本文关键字:变量 类型 改变 运行时 | 更新日期: 2023-09-27 18:07:37

今天我在大学遇到了一个挑战,我放弃了,不知道如何实现它。是否有一种方法来声明一个字符串,作为常量和加载事件可能使用反射改变字符串为非常量从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"中有一个示例,我将其用作c#深度编译代码片段的快速工具。

它甚至可能在运行时不存在,编译器可以用它们的文字值替换它的所有用法(事实上,它可能已经这样做了,尽管我认为标准不需要这样做)。

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

理论上是可能的。看到

如何使用c#编译器编程编译代码

http://support.microsoft.com/kb/304655

你可以用字符串编写代码,并使用上面文章中提到的API进行编译。

我以前没有这样做过,但它应该给你一个如何开始的想法。

也看到,

我可以在c#中改变常量的值吗?