【发布时间】:2012-07-26 14:57:56
【问题描述】:
我创建了一个类库,其中有 4 个类,每个类有 1 个方法。 头等舱是我的主要课程,在我的头等舱中,我有一个名为 calltoaction 的字符串,在这个字符串中我将动态获取以下列表中的一个
- class2.Method2()
- class3.Method3()
- class4.Method4()
现在我想从字符串“calltoaction”执行“class2.method2”。
例如:
class Class1
{
public void method1()
{
string calltoaction = "Class2.Method2()";
}
}
如何从字符串中执行“Class2.Method”?
【问题讨论】:
-
你能解释清楚一点吗?如果你只是想让
method1()调用Class2.Method2()那么什么时候不直接调用呢? -
虽然可以这样做,但通常不应该这样做。你为什么要这样做?很可能有更好的方法。
-
您要查找的内容称为
Reflection。已经有很多关于这个主题的教程。也许您可以先阅读这些内容。 -
如果您希望能够在不使用 switch 语句预定义的情况下调用任何方法,则需要使用反射。然后,您可以查找与您传入的名称匹配的方法,然后调用它。
-
这真是一个奇怪的要求!仍然有可能这只是一个展示概念的假场景。无论如何,c# 依赖于面向对象的范式并拥有一个称为多态的概念。这意味着您有一个可以实现多个类的接口,并且调用者不需要耦合到特定的类。答案中有人建议您也有机会使用代表。以这种方式使用反射称为滥用。
标签: c#