我在XML文件中有这个字符串:
DateTime.ParseExact("21/06/1980", "dd/MM/yyyy",
System.Globalization.CultureInfo.GetCultureInfo("fr-fr"))
我想读取xml,执行此字符串并检索结果。
您对执行和检索结果有什么想法吗?
答案 0 :(得分:2)
C#和.NET框架都不提供任何类型的字符串来进行代码评估。如果你可以保证字符串的格式(换句话说,你可以保证字符串将描述带有三个参数的静态方法调用),你可以解析出类型,方法和参数,并用反射调用它们。
你能描述更普遍的问题吗?也许有更好的方法。
答案 1 :(得分:0)
C#没有这样的功能。但是,您可以尝试在运行时编译dll,加载并执行它。
This论坛有这样一个例子。基本想法是使用CodeDom
。
答案 2 :(得分:0)
编译应用程序时,您的代码将转换为MSIL,然后在.NET Framework上运行。
您要求的是在运行时编译任意C#代码,然后执行它。
有几种可能的方法,但没有一种方法特别容易。
最接近的是,如果您可以依赖于.NET SDK存在于您正在运行的环境中。如果是这样,那么你可以调用CSharp编译器(csc),生成一个DLL,然后加载它。
但是,请注意 - 此生成的代码将具有与您自己的代码相同的所有权限和能力。
此外,您可能会遇到在同一应用程序域中多次加载相同程序集名称的问题。