当前位置:  开发笔记 > 编程语言 > 正文

使用单个对象上的反射调用方法

如何解决《使用单个对象上的反射调用方法》经验,为你挑选了1个好方法。

所以我有以下内容:

public class Singleton
{

  private Singleton(){}

  public static readonly Singleton instance = new Singleton();

  public string DoSomething(){ ... }

  public string DoSomethingElse(){ ... }

}

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

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



1> Jon Skeet..:

未经测试,但应该工作......

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);

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有