如何隐藏 public 属性 而不将其设为私有或将其删除
How to hide a public property without making it private or removing it
前提
假设我们在 dll 中有一个 class 和一个简单的 public 属性 "OldP”。在这个 dll 的较新版本中,我想在“NewP”中更改此 属性 的名称。我不能简单地替换 属性 名称,因为这个 dll 在很多程序中使用,我无法更改它们...
我想隐藏这个 属性 并只显示较新的 属性。这怎么可能?
“可浏览”尝试
在问这个问题之前,我在 Whosebug 上搜索了类似的问题并阅读了一些关于 Browsable 的内容,但它不起作用。这是我的代码:
Public Class Example
Private _p As Integer
<System.Obsolete("Use NewP instead", False)>
<System.ComponentModel.Browsable(False)>
Public Property OldP() As Integer
Get
Return _p
End Get
Set(ByVal value As Integer)
_p = value
End Set
End Property
Public Property NewP() As Integer
Get
Return _p
End Get
Set(ByVal value As Integer)
_p = value
End Set
End Property
End Class
当我创建一个新的 Example 对象时,我仍然可以看到“OldP”:
我哪里错了?
您不能完全阻止旧的 属性 被使用,但您可以通过添加以下指令从 IntelliSense 中隐藏它:<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>
。 OldP
属性 将不再提示,但仍可正常访问。
除此之外,我建议您更改 OldP
属性,使其不指向 _p
对象,而是指向 NewP
属性让以后的管理更方便,以后不用担心版本被淘汰
前提
假设我们在 dll 中有一个 class 和一个简单的 public 属性 "OldP”。在这个 dll 的较新版本中,我想在“NewP”中更改此 属性 的名称。我不能简单地替换 属性 名称,因为这个 dll 在很多程序中使用,我无法更改它们... 我想隐藏这个 属性 并只显示较新的 属性。这怎么可能?
“可浏览”尝试
在问这个问题之前,我在 Whosebug 上搜索了类似的问题并阅读了一些关于 Browsable 的内容,但它不起作用。这是我的代码:
Public Class Example
Private _p As Integer
<System.Obsolete("Use NewP instead", False)>
<System.ComponentModel.Browsable(False)>
Public Property OldP() As Integer
Get
Return _p
End Get
Set(ByVal value As Integer)
_p = value
End Set
End Property
Public Property NewP() As Integer
Get
Return _p
End Get
Set(ByVal value As Integer)
_p = value
End Set
End Property
End Class
当我创建一个新的 Example 对象时,我仍然可以看到“OldP”:
我哪里错了?
您不能完全阻止旧的 属性 被使用,但您可以通过添加以下指令从 IntelliSense 中隐藏它:<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>
。 OldP
属性 将不再提示,但仍可正常访问。
除此之外,我建议您更改 OldP
属性,使其不指向 _p
对象,而是指向 NewP
属性让以后的管理更方便,以后不用担心版本被淘汰