使用其他模块中的类
本文关键字:模块 其他 | 更新日期: 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
}
}
如果您仍然想使用外部库中的存储库,为什么不从要扩展的类继承呢?如果您不需要添加属性或字段,我会使用扩展方法。这些将允许您在外部类上使用特定于项目的功能。