使用来自其他模块的 类
Using classes from other modules
我在一个项目中工作,该项目有多个由不同团队制作的模块。
我必须使用来自其他模块(引用 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
}
}
如果您仍想使用来自外部库的存储库,为什么不继承您想要扩展的 类?如果您不需要添加属性或字段,我会使用扩展方法。这些将允许您在外部 类.
上使用您的项目特定功能
团队必须通力合作!
针对接口而不是具体的 classes 工作是个好主意。 类 应该实现代表其不同方面的不同接口。也许 classes 本身可以拆分成更小的只负责一个职责。
参见:Interface segregation principle。
参见:Single responsibility principle.
如果您只使用对象的一部分,那么让您依赖整个对象是没有意义的。如果您针对代表您正在使用的 class 的各个方面的界面工作,则其他部分的更改不太可能影响您。但是团队必须坐在一起定义这些接口。
我在一个项目中工作,该项目有多个由不同团队制作的模块。
我必须使用来自其他模块(引用 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
}
}
如果您仍想使用来自外部库的存储库,为什么不继承您想要扩展的 类?如果您不需要添加属性或字段,我会使用扩展方法。这些将允许您在外部 类.
上使用您的项目特定功能团队必须通力合作!
针对接口而不是具体的 classes 工作是个好主意。 类 应该实现代表其不同方面的不同接口。也许 classes 本身可以拆分成更小的只负责一个职责。
参见:Interface segregation principle。
参见:Single responsibility principle.
如果您只使用对象的一部分,那么让您依赖整个对象是没有意义的。如果您针对代表您正在使用的 class 的各个方面的界面工作,则其他部分的更改不太可能影响您。但是团队必须坐在一起定义这些接口。