2016-09-21 1 views
0

У меня есть собственное окно, в котором у меня есть свой собственный метод ShowDialog. Теперь я хотел бы скрыть унаследованные методы ShowDialog. Поскольку мой метод отличается от унаследованного (он возвращает строку и принимает две другие строки в качестве параметров), override не может быть использован. Скрывать от Intellisense недостаточно, я хочу, чтобы Intellisense показывал ошибку других программистов несуществующего метода, когда они пытаются открыть мое окно с помощью MyWindow.ShowDialog();, они должны строго использовать его с MyWindow.ShowDialog("string1", "string2");. Как это можно достичь? Или у вас есть другие идеи, поскольку причина в том, что другие программисты знают, как мое окно используется до их компиляции, тем самым экономя часть своего времени.Скрыть унаследованный член класса 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(); 
} 
+0

Тогда мой новый 'ShowDialog()' покажет, я хочу, чтобы скрыть его. – Adder

+0

Я обновил код – FreeMan

+0

«editorbrowsable только скрывает метод, если вы просто импортируете DLL, а не если вы ссылаетесь на другой проект в решении» - http://stackoverflow.com/questions/9086136/how-to- hide-public-methods-from-intellisense/9086419 # 9086419 – stuartd