0

在为项目编码时。我遇到了需要通过字符串表达式调用方法或类型成员的情况。例如,我想将 DateTime.Today值的结果放入结果框或变量中。

有没有办法从字符串表达式中调用函数或类的成员。?

以下是我正在寻找的一些示例。

  1. 日期时间.Now

  2. DateTime.Today.ToString("dd-MM-yyyy")

  3. Environment.SpecialFolder.ApplicationData

以上是用户可以传递到文本框并通过任何按钮调用它们来获得结果的一些表达式。

4

2 回答 2

0

如果表达式的第一部分始终是类型,则可以使用反射来创建类型。像这样的东西,例如:

        string theType = "System.DateTime";
        Type t = Type.GetType(theType);
        Object o = Activator.CreateInstance(t);

但是要调用方法/属性,您必须将对象转换为类型,但直到运行时您才知道类型,所以这将是有问题的。

我认为您可能需要重新考虑您的方法。也许您可以为用户提供一个界面,让他们可以从列表中选择一些选项来构建他们的表达方式。例如,让他们选择 DateTime、Environment 等,然后根据该选择为他们提供其他选项(例如,如果他们选择 DateTime 等,则现在)。

像您尝试那样解析表达式的自由格式将是困难和骇人听闻的。

于 2013-06-19T13:04:24.107 回答
0

在这里,您可以找到一个有效的解决方案,其中包含动态编译链接: 在运行时从代码文件执行 c# 代码

这应该可以解决您的问题,但它并不是很安全。依赖于代码执行范围或“检查”,我会创建自己的命令/规则,在“保存”方面,并防止注入(邪恶)代码的可能性。

我希望这有帮助。

于 2013-06-19T12:56:35.657 回答