所以我有以下几点:

public class Singleton
{

  private Singleton(){}

  public static readonly Singleton instance = new Singleton();

  public string DoSomething(){ ... }

  public string DoSomethingElse(){ ... }

}

使用反射如何调用DoSomething方法?

我问的原因是因为我将方法名称存储在XML中并动态创建UI。例如,我正在动态创建一个按钮,并告诉它单击该按钮时通过反射调用哪种方法。在某些情况下是DoSomething,在其他情况下则是DoSomethingElse。

最佳答案

未经测试,但应该可以...

string methodName = "DoSomething"; // e.g. read from XML
MethodInfo method = typeof(Singleton).GetMethod(methodName);
FieldInfo field = typeof(Singleton).GetField("instance",
    BindingFlags.Static | BindingFlags.Public);
object instance = field.GetValue(null);
method.Invoke(instance, Type.EmptyTypes);

关于c# - 在单例对象上使用反射调用方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/204468/

10-13 06:55