2013-10-24 24 views
7

Próbuję mieć opis wyliczenia wyciągniętego z pliku resx, ale otrzymuję powyższy błąd.Argument atrybutu musi być wyrażeniem stałym, wyrażeniem typeof lub wyrażeniem tworzenia tablicy parametru typu atrybutu t enum Opis

Oto mój kod:

public enum FinalStatus 
{ 
    [Description(StringResources.MyStrings.Status_0)] 
    Error = 0, 
    [Description(StringResources.MyStrings.Status_1)] 
    Ok = 1, 
    [Description(StringResources.MyStrings.Status_5)] 
    Warning = 2, 
    [Description(StringResources.MyStrings.Status_4)] 
    Unknown = 3 
} 

Odpowiedz

7

Błąd jest prawidłowa; te wartości muszą być stałe. Musisz zmienić definicje Status_n na coś podobnego:

namespace StringResources{ 
    public class MyStrings{ 
     public const string Status_0 = "0"; 
     public const string Status_1 = "1"; 
     public const string Status_4 = "4"; 
     public const string Status_5 = "5"; 
    } 
} 
+0

Dzięki Adam. Ale nie mogę znaleźć przestrzeni nazw StringResources. Stworzyłem plik resx w VS i widzę formacie XML tego samego: "Błąd. Wymagane działania użytkownika Expand wiersz szczegółów" adelphia

+1

Myślę, że może być konieczne zdefiniowanie tych wartości w różny sposób. Nie sądzę, że edytowanie kodu w pliku resx jest dobrym pomysłem. –