在从Attribute派生的类上具有可变参数的构造函数不起作用

本文关键字:变参 参数 构造函数 不起作用 Attribute 派生 在从 | 更新日期: 2023-09-27 17:59:27

我想在Enum值中存储附加信息,因此提出了Attributes。由于我希望单个属性携带1..n strings,所以我尝试让属性构造函数接受一个变量参数。像这样:

[AttributeUsage(AttributeTargets.Enum, AllowMultiple = false, Inherited = false)]
public class FileTypeAttribute : Attribute
{
    public readonly string[] Extensions;
    FileTypeAttribute(params string[] extensions)
    {
        this.Extensions = extensions;
    }
}

我的问题是,当我现在试图使用我的属性时,我的编译器会抱怨并留下以下错误消息,我真的不理解:

public enum EFileType
{
    [FileTypeAttribute("txt")]
    TEXTFILE,
    [FileTypeAttribute("jpg", "png")]
    PICTURE
}

给我:

'FileTypeAttribute' does not contain a constructor that takes '1' arguments'FileTypeAttribute' does not contain a constructor that takes '2' arguments

有人能告诉我为什么会发生这种事吗?

据我记忆所及,实际上不可能让enum变得更"java'ish"。但如果我错过了任何替代方案,我会很高兴听到它。

在从Attribute派生的类上具有可变参数的构造函数不起作用

构造函数隐式为private-显式标记为public:

public FileTypeAttribute(params string[] extensions)
{
    this.Extensions = extensions;
}