我可以做一个eval("something()");在JavaScript中动态执行代码。有没有办法让我在C#中做同样的事情?
eval("something()");
我要尝试执行的一个示例是:我有一个整数变量(例如i),并且具有多个属性,它们的名称分别为:“ Property1”,“ Property2”,“ Property3”等。现在,我想执行一些操作在“ Property i ”属性上取决于值i。
i
使用Javascript确实很简单。有什么办法用C#做到这一点?
不幸的是,C#不是那样的动态语言。
但是,您可以做的是创建一个包含类和所有内容的C#源代码文件,并通过C#的CodeDom提供程序运行它,并将其编译为程序集,然后执行它。
MSDN上的该论坛帖子在页面下方包含一些示例代码的答案: 从字符串创建匿名方法?
我很难说这是一个很好的解决方案,但是还是有可能的。
您期望在该字符串中使用哪种代码?如果它是有效代码的次要子集,例如数学表达式,则可能存在其他替代方法。
编辑 :好吧,这教我先彻底阅读问题。是的,思考可以在这里给您一些帮助。
如果将字符串除以; 首先,要获取单个属性,可以使用以下代码为类的特定属性获取PropertyInfo对象,然后使用该对象来操纵特定对象。
String propName = "Text"; PropertyInfo pi = someObject.GetType().GetProperty(propName); pi.SetValue(someObject, "New Value", new Object[0]);
链接:PropertyInfo.SetValue方法