У меня есть собственное окно, в котором у меня есть свой собственный метод ShowDialog
. Теперь я хотел бы скрыть унаследованные методы ShowDialog
. Поскольку мой метод отличается от унаследованного (он возвращает строку и принимает две другие строки в качестве параметров), override
не может быть использован. Скрывать от Intellisense недостаточно, я хочу, чтобы Intellisense показывал ошибку других программистов несуществующего метода, когда они пытаются открыть мое окно с помощью MyWindow.ShowDialog();
, они должны строго использовать его с MyWindow.ShowDialog("string1", "string2");
. Как это можно достичь? Или у вас есть другие идеи, поскольку причина в том, что другие программисты знают, как мое окно используется до их компиляции, тем самым экономя часть своего времени.Скрыть унаследованный член класса Window (или любого другого вообще)
0
A
ответ
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()' покажет, я хочу, чтобы скрыть его. – Adder
Я обновил код – FreeMan
«editorbrowsable только скрывает метод, если вы просто импортируете DLL, а не если вы ссылаетесь на другой проект в решении» - http://stackoverflow.com/questions/9086136/how-to- hide-public-methods-from-intellisense/9086419 # 9086419 – stuartd