我正在创建一个类,在CallerClass中调用CallerClass和方法覆盖
CallerClass重写方法(来自其基类)需要为另一个类调用构造函数或方法,将其称为OtherClass,但我不知道它在运行时是哪个类。
构造函数或方法的OtherClass实例和参数存储在ArrayList中,该列表是CallerClass父类的字段。
如何执行覆盖?
答案 0 :(得分:0)
如果Reflection真的不适合您的需求,您可以通过IL Weaving覆盖/扩展方法。我可以建议的一个工具是事后的想法:https://github.com/vc3/Afterthought/wiki
在下面的示例中,我定义了一个修正案,修正了CallerClassBase的所有子类 - 这是作为CallerClass的基类引入的
class MyAmendment<T> : Amendment<T, T> where T : CallerClassBase
{
public override void Amend(Method method)
{
method.Before(amended =>
{
if (amended.GetType() != typeof(CallerClassBase))
{
// Implement your logic here
}
});
}
}