如何隐藏 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 属性让以后的管理更方便,以后不用担心版本被淘汰