"Удалить" базовый член?
Есть ли способ скрыть члена базового класса?
class A
{
public int MyProperty { get; set; }
}
class B : A
{
private new int MyProperty { get; set; }
}
class C : B
{
public C()
{
//this should be an error
this.MyProperty = 5;
}
}
1 ответ
Решение
Нет средств, чтобы скрыть членов на языке C#. Самое близкое, что вы можете получить - это скрыть участника от редактора, используя EditorBrowsableAttribute
,
public class B : A
{
[EditorBrowsable(EditorBrowsableState.Never)]
new public int MyProperty {
get;
set;
}
}
Я бы осмелился сказать, что нет никакой гарантии, что это будет работать для других редакторов, кроме Visual Studio, поэтому вам лучше добавить исключение поверх него.
public class B : A
{
[EditorBrowsable(EditorBrowsableState.Never)]
public new int MyProperty {
get {
throw new System.NotSupportedException();
}
set {
throw new System.NotSupportedException();
}
}
}