c# - 动态引用对象

标签 c# reflection

假设我有 2 个对象 ObjAObjB。假设它们来自同一个类,方法名为 CommonMethod(),我正在寻找一种方法来执行如下操作:

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

与其长途跋涉:

void CallObjectMethod(string name)
{
    if(name == 'A')
        objA.CommonMethod();
    else if(name == 'B')
        objB.CommonMethod();
}

我知道这可能可以通过反射(reflection)来完成,但不太确定如何实现。

最佳答案

你应该使用 dictionary类型 <string, Obj>然后在方法中做:

void CallObjectMethod(string name)
{
   Obj ObjFromDictionary = MyDictionary[name];
   ObjFromDictionary.CommonMethod();
}

您当然可以直接调用它而无需创建临时 Obj ObjFromDictionary ...

并且您应该首先验证该字符串参数...

关于c# - 动态引用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45630054/

相关文章:

c# - WPF 字符串数组 - 绑定(bind)到资源

C# 将变量返回为可观察的

c# - 为什么Reflector无法显示字节数组?这是由于某些技术限制吗?

java - 在 Java 中反射 map

c++ - 如何在 C++ 中动态添加/删除 QML 属性?

c# - 在 C# 应用程序中管理多个 Windows 窗体

c# - Azure Redis - 每次访问 key 时如何延长到期时间?

java - 创建以字符串形式出现的类的新实例并更新集合方法

java - 如何通用地实现存储在 HashMap 中的调用方法?

c# - 将两个不同的异常处理程序附加到程序中?