C# - 在我没有编写的类中使用多态性

标签 c# architecture inheritance polymorphism

在我无法修改的类中实现多态行为的最佳方法是什么?我目前有一些代码,例如:

if(obj is ClassA) {
    // ...
} else if(obj is ClassB) {
    // ...
} else if ...

显而易见的答案是向基类添加一个虚方法,但不幸的是代码在不同的程序集中,我无法修改它。有没有比上面丑陋而缓慢的代码更好的方法来处理这个问题?

最佳答案

嗯……似乎更适合 Adapter .

public interface ITheInterfaceYouNeed
{
    void DoWhatYouWant();
}

public class MyA : ITheInterfaceYouNeed
{
    protected ClassA _actualA;

    public MyA( ClassA actualA )
    {
        _actualA = actualA;
    }

    public void DoWhatYouWant()
    {
        _actualA.DoWhatADoes();
    }
}

public class MyB : ITheInterfaceYouNeed
{
    protected ClassB _actualB;

    public MyB( ClassB actualB )
    {
        _actualB = actualB;
    }

    public void DoWhatYouWant()
    {
        _actualB.DoWhatBDoes();
    }
}

看起来代码很多,但它会让客户端代码更接近你想要的。此外,它会让您有机会思考您实际使用的界面是什么。

关于C# - 在我没有编写的类中使用多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683401/

相关文章:

c++ - 学习传承

c# - 向 Web API Controller 发出请求后 session 变量被重置

c# - 在 C# 中将 HTML 电子邮件签名附加到纯文本电子邮件正文

asp.net - 防止方法的大规模阴影

c++ - 重新实现 CMFCPropertyGridProperty 类 (MFC) 的最佳方式

c++ - 设置二维矩阵时避免段错误

c# - 在 WPF 中打印带有动态数据的流文档

c# - Web服务内存泄漏的原因

node.js - 如何使用 Express.js 为 Restful API 构建代码?

MySQL:如何获取存储函数内存储过程的结果?