为什么导航属性必须公开才能创建代理?

时间:2012-06-18 12:21:55

标签: entity-framework poco proxy-classes

http://msdn.microsoft.com/en-us/library/dd468057.aspx我看到我希望拥有更改跟踪代理的所有导航属性都需要publicvirtual。根据我的理解,CLR动态创建我的POCO的子类,并重新实现属性以提供所请求的行为。

为此我承诺该属性需要virtual,并且它应具有protected或更高的可访问性。但是,如果我想在程序集中使用它们以方便它们,但又不想公开它们,我希望它们不是public。这引出了两个问题。

  1. (为了解我的情况)为什么运行时要求属性为public而不是protectedinternal

  2. (对于我的实际情况)是否有任何隐藏导航属性的变通方法,但仍有更改跟踪行为?

1 个答案:

答案 0 :(得分:2)

属性必须是公共(和虚拟)或受保护(和虚拟)才能使代理工作。

代理程序中未预先定义代理程序,因此内部代码不起作用。

私有不会出于明显的原因(代理继承自您的类)。