1

前提

假设我们在一个带有简单公共属性“ OldP ”的dll中有一个类。在此 dll 的较新版本中,我想在“ NewP ”中更改此属性的名称。我不能简单地替换属性名称,因为这个 dll 用于很多程序中,我无法更改它们......我想隐藏这个属性并只显示较新的属性。这怎么可能?

“可浏览”的尝试

在问这个问题之前,我在StackOverflow上搜索了类似的问题并阅读了一些关于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 ”:

输出

我哪里错了?

4

1 回答 1

1

您无法完全阻止使用旧属性,但您可以通过添加以下指令将其从 IntelliSense 中隐藏<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>:该OldP属性将不再被推荐,但仍可正常访问。

除此之外,我建议您更改OldP属性,使其不引用_p对象,而是引用NewP属性,以使将来的管理更容易,这样您将来就不必担心不推荐使用的版本。

于 2021-04-05T11:16:16.323 回答