Jeśli mam enum jak tenDlaczego Nullable <T> nie jest prawidłowym parametrem niestandardowego atrybutu, gdy T jest?
public enum Hungry
{
Somewhat,
Very,
CouldEatMySocks
}
i atrybut niestandardowy jak ten
public class HungerAttribute : Attribute
{
public Hungry HungerLevel { get; set; }
public Hungry? NullableHungerLevel { get; set; }
}
mogę zrobić to
[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1
ale nie mogę zrobić tego
[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2
Generuje błąd, który mówi: "NullableHungerLevel" nie jest poprawnym argumentem o nazwie atrybutu, ponieważ nie jest prawidłowym typem parametru atrybutu ".
Dlaczego to nie jest dozwolone? Rozumiem, że zasadniczo nie ma go na liście akceptowanych typów. Poprawne typy wydają się być prymitywami, wyliczeniem, ciągiem znaków, typem i jednowymiarowymi tablicami poprzednich typów.
Czy to tylko stara zasada, która nie została zaktualizowana, gdy pojawił się Nullable?
Chociaż pierwotnie natknąłem to w .NET 3.5 VS2008 to nadal nie działa w VS2010 Beta1. –