переопределить метаданные в статическом конструкторе?

У меня есть класс, который наследует класс TextBox , назовите его MyTextBox

I ' Мне бы хотелось переопределить значение по умолчанию Background для этого класса.

Я искал способ сделать это и нашел хороший вариант: вызов BackgroundProperty.OverrideMetadata ()

проблема в том, : где я могу поставить это?

в App.OnStartup () ? Уродливо и непрактично, я бы хотел, чтобы это было в файле кода моего класса.

в конструкторе класса? Я получаю исключение:

PropertyMetadata уже зарегистрированы для типа MyTextBox.

(мне кажется, я понимаю, почему у меня это получается идеально)

Итак, я снова просмотрел информацию о статическом конструкторе в C # (раньше об этом не говорил, а жаль )

Итак, вот мой код:

public class MyTextBox : TextBox
{
    static MyTextBox()
    {
        MyTextBox.BackgroundProperty.OverrideMetadata(typeof(MyTextBox), new FrameworkPropertyMetadata(App.Current.Resources["CustomBackgroundBrush"]));
    }
}

, я очень доволен этим, но Microsoft нет. А именно, когда я использую функцию анализа кода, я получаю следующее:

CA1810: Инициализировать статические поля ссылочного типа inline

Отсюда мой вопрос: что я могу с этим сделать?

  • игнорировать предупреждение? >> Я не люблю игнорировать предупреждения
  • переместить вызов в метод overrideMetadata? >> Я бы хотел, но где?

любые подсказки приветствуются, спасибо

Изменить: Я добавлю, что не совсем понимаю, почему я получаю это предупреждение, поскольку я ничего не инициализирую за говорят в моем статическом конструкторе, или я?

7
задан dugas 22 March 2011 в 15:57
поделиться