Как скрывать в редакторе ненужные свойства и методы при наследовании? - C#
Формулировка задачи:
Согласно MSDN есть базовый класс Control, Label является его наследником. Однако в Label скрыта часть свойств, событий и методов базового класса. Например, скрыто свойство BackgroundImage, оно присутствует, если набирать вручную, но через точку не доступно. Как добиться такого же эффекта?
Нагуглил вот такую штуку - [EditorBrowsable(EditorBrowsableState.Never)], но это не работает, из С "видно" V и W
class C
{
class A
{
protected int v;
public virtual int V { get { return v; } set { v = value; } }
public virtual int W()
{
return v;
}
public A(int v)
{
this.v = v;
}
}
class B : A
{
[EditorBrowsable(EditorBrowsableState.Never)]
public override int V { get { return base.V; } }
[EditorBrowsable(EditorBrowsableState.Never)]
public override int W()
{
return base.W();
}
public B(int v)
:base(v)
{
}
}
public C()
{
B n = new B(2);
System.Console.WriteLine(n.V);
System.Console.WriteLine(n.W());
System.Console.ReadLine();
}
}Решение задачи: «Как скрывать в редакторе ненужные свойства и методы при наследовании?»
textual
Листинг программы
public class Label : Control
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[SRDescription("LabelBackgroundImageDescr")]
[EditorBrowsable(EditorBrowsableState.Never)]
[Browsable(false)]
[SRCategory("CatAppearance")]
public override Image BackgroundImage
{
get
{
return base.BackgroundImage;
}
set
{
base.BackgroundImage = value;
}
}
}