我有一个像这样的CS类(class):
public class MyClass
{
[DefaultValue(Color.Red)]
public Color MyColor{get;set;}
}
编译器总是返回错误CS0182: 属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式
我这是怎么了?
T_T
最佳答案
正如已经指出的,Color.Red
不是常量表达式。如果您的目的是使用像 PropertyGrid
这样的东西,那么您可以通过添加 ShouldSerialize*
和 Reset*
方法来实现这一点:
public class MyClass
{
public MyClass()
{
ResetMyColor();
}
public Color MyColor { get; set; }
private bool ShouldSerializeMyColor() { return MyColor != Color.Red; }
private void ResetMyColor() { MyColor = Color.Red; }
}
如果您的目的是使用 XmlSerializer
,则 ShouldSerialize*
必须是公共(public)的(Reset*
不被 使用XmlSerializer
):
public class MyClass
{
public MyClass()
{
MyColor = Color.Red;
}
public Color MyColor { get; set; }
public bool ShouldSerializeMyColor() { return MyColor != Color.Red; }
}
关于c# - Color.Red 不能作为属性中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214440/