2011-06-19 8 views
5

Chcę przechowywać dodatkowe informacje w moich wartościach Enum i dlatego pojawiły się Atrybuty. Ponieważ chcę, aby pojedyncza właściwość nosiła 1.nn. strings, próbowałem uczynić konstruktor atrybutów akceptującym parametr zmienny. Tak:Konstruktor ze zmiennymi parametrami klasy wywodzącej się z Atrybutu nie działa

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

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

Moim problemem jest to, że kiedy jestem teraz próbuje skorzystać z mojej własności mój kompilator narzeka i liści z następującym komunikatem o błędzie, który ja naprawdę nie rozumiem:

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

daje mi:

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

Czy ktoś może mi powiedzieć, dlaczego tak się dzieje proszę ?

O ile dobrze pamiętam, nie ma takiej możliwości, aby wyliczać trochę więcej "java'ish". Ale jeśli brakuje mi jakiejkolwiek alternatywy, chętnie się o tym dowiem.

Odpowiedz

9

Konstruktor jest niejawnie private - wyraźnie oznaczyć go public:

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

Jeeezu .. Co mówią o lesie i drzew. Wielkie dzięki, marnowałbym godziny :) –

Powiązane problemy