【问题标题】:Can we inherit repository in another repository c#我们可以在另一个存储库中继承存储库c#
【发布时间】:2014-01-27 12:34:00
【问题描述】:

我是 Repository Pattern 的新手,并试图在我的项目中使用它。我的项目中有以下实体:

  • 用户资料
  • 用户类型A
  • 用户类型B
  • 用户类型C

我有 3 种类型的用户和 UserProfile,其中包含有关这三种用户的一般信息,例如密码、用户名等。还有许多其他实体,每种类型的用户与其他实体有不同类型的关系。现在我决定为此创建以下存储库模式:

public class UserProfileRepository
{
 ....
}

public class UserTypeAReository: UserProfileRepository
{
 .....
}

public class UserTypeBReository: UserProfileRepository
{
 .....
}

public class UserTypeCReository: UserProfileRepository
{
 .....
}

所以我想知道这(存储库继承)是否符合良好做法,或者是否有其他更好的方法来做到这一点?

编辑

存在 1 到 0..1 的共享主键关系 b/w UserProfile 和(UserTypeA、UserTypeB 和 UserTypeC)

【问题讨论】:

  • 是的,这很好。尤其是因为您将 UserProfile 的属性存储在单独的表中,从而使事情保持干燥。尽管最好在codereview.stackexchange.com 上问这个问题 注意:没有必要在每个类名中都指定“存储库”,你应该只在有用的地方使用模式,不要把自己锁在一个中。
  • 如果你的用户类型是不连续的,我会去继承,让 ef 处理所有必要的事情。如果不是,您的方法似乎很好。

标签: c#


【解决方案1】:

根据您要实现的目标,您还可以使用InterfaceAbstract Class

如果你希望所有的类都有一个通用契约,但是每个方法的实现是不同的,那么你可以使用Interface,这将提供更大的灵活性,因为你有多接口继承 v的单类继承C#

使用Abstract class,您可以设置方法以及实现,但允许派生类覆盖基实现。

这篇 SO 帖子也可能有帮助:Interface vs Base class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多