在http://msdn.microsoft.com/en-us/library/dd468057.aspx我看到我希望拥有更改跟踪代理的所有导航属性都需要public
和virtual
。根据我的理解,CLR动态创建我的POCO的子类,并重新实现属性以提供所请求的行为。
为此我承诺该属性需要virtual
,并且它应具有protected
或更高的可访问性。但是,如果我想在程序集中使用它们以方便它们,但又不想公开它们,我希望它们不是public
。这引出了两个问题。
(为了解我的情况)为什么运行时要求属性为public
而不是protected
或internal
?
(对于我的实际情况)是否有任何隐藏导航属性的变通方法,但仍有更改跟踪行为?
答案 0 :(得分:2)
属性必须是公共(和虚拟)或受保护(和虚拟)才能使代理工作。
代理程序中未预先定义代理程序,因此内部代码不起作用。
私有不会出于明显的原因(代理继承自您的类)。