我应该如何设计我的对象模型,以便我的DAL可以填充只读字段?

Bob*_*der 9 .net c# asp.net

为了区分问题,在我当前的项目中,我决定在单独的程序集中完全分离我的DAL和BLL/Business对象.我希望将我的业务对象保持为简单的结构,而没有任何逻辑可以使事情变得非常简单.我想如果我可以将我的业务逻辑与我的DAL分开.所以我的应用程序将告诉我的DAL加载我的对象,我的DAL将运行到数据库并获取数据,用数据填充对象,然后将其传递回我的BLL.

问题 - 如何将DAL放在单独的程序集中并将数据推送到只读字段?

  • 如果我将getter设置为protected,那么继承的对象可以访问它,这实际上并不是我想要的,因为我将返回继承的对象类型,而不是原始的对象类型.
  • 如果我将getter设置为internal,那么我的DAL必须与我不想要的BLL位于同一个程序集中.
  • 如果我将getter设置为public,那么当应该只读取时,任何人都可以读取/写入它.

编辑:我注意到我可以有一个返回类型的ObjectBase,但实际上是返回一个对象或从ObjectBase派生的对象集合,所以对外界(在我的DAL之外)属性将是只读的,但我的派生类型(只能在我的DAL中访问)属性实际上是读/写.

Joh*_*yre 7

您可以通过构造函数设置只读属性.