小编asd*_*000的帖子

有没有一种方法可以隐藏类的特定属性的枚举标志?WinForms设计器

我有枚举可以说例如:

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属性应用于枚举标志,因为它在所有类的属性网格中都隐藏了该标志。我希望仅对特定类而不对所有类隐藏特定的枚举值。

.net c# enums windows-forms-designer winforms

4
推荐指数
1
解决办法
97
查看次数

为什么不首先调用静态构造函数,并且在使用声明的变量时出现异常?

从MSDN

静态构造函数用于初始化任何静态数据,或执行仅需要执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,它将自动调用

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'的类型初始值设定项引发了异常。”

构造函数应该先调用静态构造函数吗?这样该字典将被填充,然后任何使用它的对变量的调用都可以。

.net c# constructor dictionary static-constructor

1
推荐指数
1
解决办法
84
查看次数