Warum ist ein Nullable<T> keine gültige Benutzerdefinierte Attribut-Parameter bei der T ist?

Wenn ich ein enum wie diese

public enum Hungry
{
    Somewhat,
    Very,
    CouldEatMySocks
}

und ein benutzerdefiniertes Attribut wie dieses

public class HungerAttribute : Attribute
{
    public Hungry HungerLevel { get; set; }
    public Hungry? NullableHungerLevel { get; set; }
}

Kann ich dies tun

[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1

aber ich kann dies nicht

[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2

Generiert es einen Fehler, der sagt "NullableHungerLevel' is not a valid named attribute argument, denn es ist nicht ein gültiges Attribut parameter-Typ".

Warum ist das nicht erlaubt? Ich verstehe, dass es grundsätzlich einfach nicht auf der Liste der akzeptierten Arten. Die gültigen Typen zu sein scheinen, primitive, Enumerationen, Strings, Typ und eindimensionale arrays der vorhergehenden Arten.

Ist dies nur eine alte Regel, die nicht aktualisiert werden, wenn Nullable kam?

  • Während ich ursprünglich kam über diese .NET 3.5 VS2008 es funktioniert immer noch nicht in VS2010 Beta1.
InformationsquelleAutor Mike Two | 2009-09-12
Schreibe einen Kommentar