2016-09-21 92 views
0

我有我自己的窗口,其中有我自己的ShowDialog方法。現在我想隱藏繼承的ShowDialog方法。由於我的方法與繼承的不同(它返回字符串並接受其他兩個字符串作爲參數),因此不能使用override。從Intellisense隱藏是不夠的,我想Intellisense向其他程序員顯示一個不存在的方法的錯誤,當他們試圖打開我的窗口MyWindow.ShowDialog();,他們應該嚴格使用它與MyWindow.ShowDialog("string1", "string2");。這怎麼能實現?或者您還有其他想法,因爲其原因是其他程序員知道我的窗口在編譯之前如何使用,從而節省了一些時間。隱藏窗口類的繼承成員(或任何其他一般)

回答

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(); 
} 
+0

然後我的新'的ShowDialog()'會顯示出來,我想隱藏它。 – Adder

+0

我更新了代碼 – FreeMan

+0

「editorbrowsable只隱藏了方法,如果您只是導入dll,而不是如果您在解決方案中引用另一個項目」 - http://stackoverflow.com/questions/9086136/how-to- hide-public-methods-from-intellisense/9086419#9086419 – stuartd