【问题标题】:Virtual property with private set具有私有集的虚拟财产
【发布时间】:2010-01-28 13:30:04
【问题描述】:
我正在尝试在 MVC 项目中使用流利的 nhibernate...我对 nhibernate 和流利非常陌生...似乎实体应该具有虚拟属性,并且集合应该是私有的 ID...我使用 vb 语言...所以尝试使用可覆盖...它给出了错误...
Public Overridable Property DesignId() As Integer
Get
End Get
Private Set(ByVal value As Integer)
End Set
End Property
它说属性不能被覆盖,因为它有一个私有访问器......不知道如何去做......网络中的所有教程都在 c# 中......我的客户特别是在 vb 中......谢谢提前...
【问题讨论】:
标签:
asp.net-mvc
vb.net
fluent-nhibernate
【解决方案1】:
如何让 setter 受到保护,以便覆盖的类可以看到它...
即:
Private _designId as Integer
Public Overridable Property DesignId() As Integer
Get
Return _designId
End Get
Protected Set(ByVal value As Integer)
_designId = value
End Set
End Property
【解决方案2】:
特别是对于 VB,如果你让 setter 受保护,那应该避免给你错误(因为受保护允许你覆盖设置)。
【解决方案3】:
使用受保护而不是私有。使用 Public 也可以,如果您的设计可以使用 - Set 不必是 Private,这只是很好的设计。
Private 错误是 VB 限制,这在 C# 中有效。 VB 需要同时覆盖 getter 和 setter,而 C# 不需要。