首页 > 解决方案 > can I use generic services in domain service with different business or not?

问题描述

I have problem in create generic domain service or not?? I have "BaseEntity" that inherit any entity from it and has been every moment set value when update or insert method called in repository .my domain service layer that implements every entity business. my problem is what I have to do when I have one business that implement in every Services in domain service.can I use generic class and interface to manage BaseEntity and then change business for example for Update method override base update method or I used for every entity one service class with one interface with separate business???

标签: c#design-patternsdomain-driven-designdomainservices

解决方案


在大多数情况下,我建议不要为您的域使用任何通用基类。如果你有一个类的层次结构,那可能是你有一个更多的技术/框架域,但即使在那里你应该更喜欢组合而不是继承

例如,我不会使用 a BaseEntity,因为我觉得它是多余的。您可能会遇到的关闭可能类似于IRepository<T>带有 aT Get(Guid id)和 avoid Save(T instance)方法的东西,但您必须准确考虑在哪里使用这样的东西。您可以通过遵循单一职责原则来明确您的角色,并使用IRepositoryGetand IRepositorySave。但是,这些类型的接口仅在对象之间有一些广泛的共性并且通常不会发生的情况下才有用。您可能会发现一些查找数据似乎适合这个空间,但即使在那里,您可能更愿意设计一个公共存储库,而不是为每种类型设计一个单独的存储库。

你最肯定要避免的是有一个粗粒度的接口,然后NotImplementedException抛出各种 s。当您发现您正在这样做时,宁愿将接口拆分为更细粒度的版本并仅实现所需的接口。通过这种方式,您可以使用安全强制转换来确保在调用方法之前实现接口。


推荐阅读