我有一个项目,我希望能够遍历一个类的实例并找到所有标记为public virtual的方法。然后我想覆盖类的实例,以便在调用方法时我可以调用一组不同的代码。我知道如何使用反射找到类中公共的所有方法,但我无法弄清楚如何覆盖虚方法。
基本上我要使用一个代理对象,当他们调用该方法时,我想在底层对象上调用一个方法。我可以通过手动覆盖每个方法来做到这一点,但我想使用更动态的东西。
答案 0 :(得分:3)
typeof(MyClass)
.GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(m => m.IsVirtual);
答案 1 :(得分:2)
MethodBase有IsVirtual Property。
MethodBase m = typeof(MyClass).GetMethod("MyMethod");
if (m.IsVirtual)
// yada-yada-yada...