我有枚举可以说例如:
public enum Color
{
red,
green,
blue
}
Run Code Online (Sandbox Code Playgroud)
并有两个班。具有枚举的属性。
public class ClassA
{
public Color Color{get;set;}
}
public class ClassB
{
[InvisibleFlag(Color.red)] // I want something like that
public Color Color{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
现在在Windows Forms Designer中,我只想仅从ClassB的Color枚举中隐藏红色标记。
我知道我可以创建一个单独的枚举。但是为什么要重复值呢?我只举了一个简单的例子。
我猜可能会对上级可以帮助我的事情有所帮助。
描述符API。我讨厌 ;(
也许像 TypeDescriptor.AddAttributes(object, new BrowsableAttribute(false));
在这种情况下,此答案将无效。我不想将Browsable属性应用于枚举标志,因为它在所有类的属性网格中都隐藏了该标志。我希望仅对特定类而不对所有类隐藏特定的枚举值。
从MSDN
静态构造函数用于初始化任何静态数据,或执行仅需要执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,它将自动调用
现在出现了我的问题:
public static class DateFormat
{
private static List<string> DateFormats = new List<string>();
public static string DateSeparator { get; set; } = "/";
public static string Current { get; set; } = DateFormats[1]; // error here
static DateFormat()
{
DateFormats.Add("yyyy{0}MM{0}dd HH{1}mm{1}ss");
DateFormats.Add("yyyy{0}MM{0}dd hh{1}mm{1}ss");
}
}
Run Code Online (Sandbox Code Playgroud)
如您在调用DateFormats[1]错误时看到的
“'DateFormat'的类型初始值设定项引发了异常。”
构造函数应该先调用静态构造函数吗?这样该字典将被填充,然后任何使用它的对变量的调用都可以。