使用其他模块中的类

本文关键字:模块 其他 | 更新日期: 2023-09-27 18:37:21

我正在从事一个项目,该项目由不同团队制作了多个模块。

我必须使用其他模块中的存储库和代码优先实体类(引用 dll),但我无法访问代码,也无法修改它。

我想

保护自己免受外部代码结构更改的影响,并且我想向这些类添加功能。

最好的方法是什么?

我正在考虑制作类似服务层的东西;获取外部数据,添加一些功能并解析到我自己的类中,以避免对代码中的外部程序集的额外依赖。

如果有一天外部类发生变化,我只需要修改这个服务层。

你觉得怎么样?其他方法?我只能更改我的模块。

多谢!

使用其他模块中的类

团队必须共同努力!

最好

使用接口而不是具体类。类应实现表示其不同方面的不同接口。也许类本身可以分成更小的类,只有一个责任。

请参见:接口隔离原则。
请参阅:单一责任原则。

如果您只使用对象的一部分,那么让您依赖于整个对象是没有意义的。如果您使用表示正在使用的类的几个方面的接口,则其他部分的更改不太可能影响您。但是团队必须坐在一起并定义这些接口。

我无法想出一种更适合这种情况的复杂方法,但您需要的是某种抽象。您可以创建一个包装器对象,也可以像下面这样简单:

public class MyType
{
    // Your own implementation
    // Properties
    // And methods
    public static MyType Create(TheirEntity entity)
    {
        // Create an instance of your type from their object
    }
    // Or provide a conversion operator, it could be implicit if you'd like
    public static explicit MyType(TheirEntity entity)
    {
         // Implement a conversion here
    }
}

如果您仍然想使用外部库中的存储库,为什么不从要扩展的类继承呢?如果您不需要添加属性或字段,我会使用扩展方法。这些将允许您在外部类上使用特定于项目的功能。