我想在Enum
值中存储其他信息,因此想出了属性。因为我想要一个属性来携带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
有人能告诉我为什么会这样吗?
据我记得,实际上没有可能让枚举更加“java'ish”。但如果我遗漏任何其他选择,我会很高兴听到它。
答案 0 :(得分:9)
构造函数隐式private
- 明确标记public
:
public FileTypeAttribute(params string[] extensions)
{
this.Extensions = extensions;
}