使用ILgenerator重载方法,使用来自ArrayList字段的项数据
本文关键字:ArrayList 字段 数据 重载 ILgenerator 方法 使用 | 更新日期: 2023-09-27 18:07:21
我正在创建一个类,命名为CallerClass和CallerClass中的方法重写
CallerClass被覆盖的方法(从它的基类)需要调用另一个类的构造函数或方法,调用OtherClass,但我不知道这是哪个类在运行时。
OtherClass实例和构造函数或方法的参数存储在一个ArrayList中,该ArrayList是CallerClass的父类的一个字段。
如何执行重写?
如果反射确实不能满足您的需求,您可以通过IL编织覆盖/扩展方法。我可以推荐的一个工具是Afterthought: 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
}
});
}
}