C # Переопределить атрибут DefaultValue? - PullRequest
1 голос
/ 28 марта 2012

Возможно ли в пользовательском элементе управления C # переопределить атрибут, примененный к свойству, без необходимости переопределять свойство?

Скажем, например, что вы хотите свойство, которое, как унаследовано, имеет атрибут «Browsable (true)», но для вашего контроля вы хотите «Browsable (false)». Вам нужно переопределить само свойство или вы можете что-то сделать, например, с помощью TypeDescriptor?

Если свойство не является виртуальным, переопределение невозможно, и, хотя использование «new» возможно, вы не сможете получить доступ к свойству со ссылкой на базовый класс (например, «Control»).

есть. Простой пример изменения значения по умолчанию для полос прокрутки в элементе управления текстовым полем.

public partial class MyTextBox : TextBox
{
  public MyTextBox()
  {
     this.ScrollBars = ScrollBars.Vertical;
  }

  [DefaultValue(typeof(ScrollBars),"Vertical")]
  public ScrollBars ScrollBars
  {
     get { return base.ScrollBars; }
     set { base.ScrollBars = value; }
  }
}

// this doesn't go via property setter as not overridden
TextBox textbox = new MyTextBox();
textbox.ScrollBars = ScrollBars.None;

Спасибо, Росс

1 Ответ

0 голосов
/ 28 марта 2012

нет, вы не можете сделать это без переопределения. Если свойство не виртуальное - вы обречены.

...