Конструктор с переменными параметрами класса, полученного из атрибута, не работает - PullRequest
5 голосов
/ 19 июня 2011

Я хочу сохранить дополнительную информацию в моих 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;
    }
}

Моя проблема в том, что, когда я сейчас пытаюсь использовать свое свойство, мой компилятор жалуется и выдает следующее сообщение об ошибке, которое я действительно не понимаю:

Дает мне:

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

Может кто-нибудь сказать мне, пожалуйста, почему это происходит?

Насколько я помню, на самом деле нет возможности сделать перечисления немного более "java'ish".Но если мне не хватает альтернативы, я был бы рад услышать об этом.

1 Ответ

9 голосов
/ 19 июня 2011

Конструктор неявно private - явно пометить его public:

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