动态引用对象

Joh*_*Tan 4 c# reflection

说我有两个对象ObjAObjB.假设它们来自同一个类,并且调用了一个方法CommonMethod(),我正在寻找一种方法来做这样的事情:

void CallObjectMethod(string name)
{
    // where name could be 'A' or 'B'
    (Obj + name).CommonMethod();
}
Run Code Online (Sandbox Code Playgroud)

而不是做很长的路:

void CallObjectMethod(string name)
{
    if(name == 'A')
        objA.CommonMethod();
    else if(name == 'B')
        objB.CommonMethod();
}
Run Code Online (Sandbox Code Playgroud)

我明白这可能是通过反思来完成的,但不太确定如何实现这一点.

ΦXo*_*a ツ 6

您应该使用类型的字典<string, Obj>然后在方法中执行:

void CallObjectMethod(string name)
{
   Obj ObjFromDictionary = MyDictionary[name];
   ObjFromDictionary.CommonMethod();
}
Run Code Online (Sandbox Code Playgroud)

你当然可以直接调用它而不创建临时Obj ObjFromDictionary...

你应该首先验证该字符串参数...