在从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"。但如果我错过了任何替代方案,我会很高兴听到它。
构造函数隐式为private
-显式标记为public
:
public FileTypeAttribute(params string[] extensions)
{
this.Extensions = extensions;
}