【问题标题】:Hide inherited member of a Window class (or any other in general)隐藏 Window 类的继承成员(或任何其他一般)
【发布时间】:2016-09-21 08:40:39
【问题描述】:

我有自己的窗口,在其中我有自己的ShowDialog 方法。现在我想隐藏继承的ShowDialog 方法。由于我的方法与继承的方法不同(它返回字符串并接受另外两个字符串作为参数),所以不能使用override。隐藏 Intellisense 是不够的,我希望 Intellisense 在其他程序员尝试使用MyWindow.ShowDialog(); 打开我的窗口时向他们显示不存在方法的错误,他们应该严格使用MyWindow.ShowDialog("string1", "string2");。如何做到这一点?或者你有其他想法,因为这样做的原因是其他程序员在编译它之前就知道我的窗口是如何使用的,从而节省了一些时间。

【问题讨论】:

    标签: c# wpf inheritance window


    【解决方案1】:

    如果您希望开发人员使用但警告他们方法折旧,请使用 ObsoleteAttribute 属性。如果您想对他们隐藏方法,请使用 EditorBrowsable 属性。

    [ObsoleteAttribute("you cannot use this method use ShowDialog(string,string) instead", true)] 
    new public void ShowDialog()
    {
         base.ShowDialog();
    }
    

    [ObsoleteAttribute("Depreciated, use ShowDialog(string,string) instead", false)] 
    new public void ShowDialog()
    {
         base.ShowDialog();
    }
    

    [EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
    new public void ShowDialog()
    {
        base.ShowDialog();
    }
    

    【讨论】:

    • 然后我的新ShowDialog() 会出现,我想隐藏它。
    • "editorbrowsable 仅在您仅导入 dll 时隐藏该方法,而不是在您引用解决方案中的另一个项目时" - stackoverflow.com/questions/9086136/…
    • 是的,[EditorBrowsable] 没有隐藏它,但是[Obsolete] 在使用时会显示警告,所以它是什么。仍在寻找完全删除,但如果没有人设法删除它,这将被标记为答案。
    • 如果在 Obsolete 属性中设置 false ,则没有人可以使用该方法,如果设置为 true ,它会发出警告,但您可以使用它,因为它已经被贬值了。
    猜你喜欢
    • 2012-02-13
    • 2010-09-05
    • 2011-10-10
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多