我有一个类,继承了
我想重新定义此类的默认
所以我寻找一种方法来实现这个目标,找到了一个好的选项:调用
问题是:我应该把它放在哪里?
放在
放在类的构造函数中?我会收到异常:
因此,我再次查找并发现C#中有静态构造函数(之前不知道,真可惜)。
下面是我的代码:
TextBox
类,称其为MyTextBox
。我想重新定义此类的默认
Background
值。所以我寻找一种方法来实现这个目标,找到了一个好的选项:调用
BackgroundProperty.OverrideMetadata()
。问题是:我应该把它放在哪里?
放在
App.OnStartup()
中?这样不太美观且不切实际,我希望它在我的类代码文件中。放在类的构造函数中?我会收到异常:
(在我的理解中没问题,我明白为什么会出现这个异常)PropertyMetadata is already registered for the type 'MyTextBox'.
因此,我再次查找并发现C#中有静态构造函数(之前不知道,真可惜)。
下面是我的代码:
public class MyTextBox : TextBox
{
static MyTextBox()
{
MyTextBox.BackgroundProperty.OverrideMetadata(typeof(MyTextBox), new FrameworkPropertyMetadata(App.Current.Resources["CustomBackgroundBrush"]));
}
}
现在我对此感到非常满意,但是微软不是这样的。具体而言,当我使用代码分析功能时,我会得到以下提示:
因此我的问题是:我该怎么办?
- 忽略警告吗? >> 我不喜欢忽略警告
- 将overrideMetadata方法调用移到哪里呢? >> 我想移动,但是移到哪里呢?
欢迎任何提示,谢谢。
编辑:我会补充说我不完全理解为什么我会收到这个警告,因为我在静态构造函数中没有初始化任何东西,或者说我吗?