我有一个项目,我希望能够迭代一个类的实例,并找到所有标记为公共虚拟的方法。然后我想重写类的实例,以便在调用该方法时可以调用一组不同的代码。我知道如何使用反射找到类中的所有公共方法,但我不知道如何覆盖虚拟方法。
基本上我是给一个代理对象使用,当他们调用方法时,我想在底层对象上调用一个方法。我可以通过手动重写每个方法来做到这一点,但我想使用一些更动态的东西。
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...