经过多次尝试使用EF Code First映射我的一个聚合体而没有将其变成一个完整的贫血领域模型而产生了一个很好的一周的沮丧之后,我最近偶然发现了来自Vaughn Vernon的this blog entry描述了美丽的解决方案,不涉及荒谬的映射尝试,'DAO'等,但干净的域实体和状态对象让EF完美地完成它的工作。
现在,该解决方案有一个小缺陷,我想知道是否有任何方法可以摆脱它:为了从客户端“隐藏”状态对象(和让它们只能用于EF),Vaughn表示“状态”存取器以及“状态构造器”作为内部。当所有内容被一起推送到一个只能从外部访问的单个库项目时,这很好用,但是在大多数情况下,域分布在多个模块等中,这意味着我必须将成员公开为公共 - 从而暴露域中的技术问题实体到客户(他们可以使用..或滥用)。
是否有可能从客户端访问中隐藏状态对象?
答案 0 :(得分:1)
你可以......
a)将[assembly:InternalsVisibleTo("FriendAssemblyName")]
assembly attribute添加到AssemblyInfo.cs
,只要您知道所有朋友集会,或
b)使用explicit interface implementation向不将用户投射到专用界面的用户隐藏属性,例如: IState<T>
或
c)添加[EditorBrowsable(EditorBrowsableState.Never)]
attribute以隐藏IntelliSense中的属性。