c# - 方法重写或拦截

标签 c# dll methods overriding intercept

在我的项目中,我引用了许多 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/

相关文章:

c++ - Lua DLL 库依赖

c++ - LoadLibrary 采用 LPCTSTR

winapi - LoadLibraryW 和 POSIX 路径分隔符

java - 如何压缩数组的原始整数数据?

c# - Humanizer 无法在 C# 中对意大利语单词进行单数化或复数化

c# - 如何从 MySQL 数据库更新 Entity Framework 模型?

c# - WPF:网格中的 ScrollViewer

c# - 用 LINQ 查询替换 foreach

java - 如何混合该方法以便显示所有因素?我还缺少一个因素

java - 简单的 Java 方法无论用户输入如何都返回 0