使用反射查找所有公共虚拟方法并提供覆盖



我有一个项目,我希望能够迭代一个类的实例,并找到所有标记为公共虚拟的方法。然后我想重写类的实例,以便在调用该方法时可以调用一组不同的代码。我知道如何使用反射找到类中的所有公共方法,但我不知道如何覆盖虚拟方法。

基本上我是给一个代理对象使用,当他们调用方法时,我想在底层对象上调用一个方法。我可以通过手动重写每个方法来做到这一点,但我想使用一些更动态的东西。

typeof(MyClass)
    .GetMethods(BindingFlags.Public | BindingFlags.Instance)
    .Where(m => m.IsVirtual);

MethodBase有一个IsVirtual属性。

MethodBase m = typeof(MyClass).GetMethod("MyMethod");
if (m.IsVirtual)
  // yada-yada-yada...

相关内容

  • 没有找到相关文章

最新更新