在我的项目中,我引用了许多 DLL 程序集。这些 DLL 之一包含我想要更改的 bool 方法。我没有 DLL 的原始源代码,并且使用 Reflector 反编译项目似乎不切实际。我想要做的就是拦截或覆盖此方法或方法调用,以便我可以更改它的返回值以匹配我自己在所述 DLL 之外的方法。
有这样的方法吗?谢谢!
编辑:
这是一个例子:
public virtual bool isOwner()
{
return false;
}
本质上,我只是想将 getOwner 更改为返回 true;
最佳答案
如果该类是公共(public)的并且该方法被标记为虚拟,那么您可以简单地使用以下语法覆盖它:
public MyClass : TheClass
{
public override ReturnType MethodName(Arguments)
{
//class the base class implementation if needed
//base.MethodName(Arguments)
//do your own stuff and return whatever is needed
}
}
希望这有帮助
编辑:不过请注意,这不会替换 DLL 中的调用代码。仅当您自己实例化派生类并从代码中调用它时,它才有效。
关于c# - 方法重写或拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20928050/