Ich habe eine Klasse, deren Eigenschaften aus Spalten in einer SQL Server-Tabelle aufgefüllt werden. Einige der Spalten lassen null zu, andere nicht. Bei numerischen Spalten (tinyint, int, datetime usw.) bedeutet dies, dass die Eigenschaften als Nullable<T>
deklariert werden. Zum Beispiel:NullableAttribute oder Äquivalent in Asp.net
public class MyClass
{
public int MyNonNullableColumnProperty { get; set; }
public int? MyNullableColumnProperty { get; set; }
}
Nehmen wir an, Sie haben eine String-Eigenschaft, die aus einer Zeichenspalte zieht. Da Strings Klassen sind, gibt es natürlich keine Möglichkeit, die Eigenschaft selbst als Nullable oder Non-Nullable zu definieren. Allerdings möchte ich noch eine Möglichkeit, die Eigenschaft zu dekorieren, damit Programme wie benutzerdefinierten datengebundenen Steuerelementen wissen, dass es nicht Nullable ist.
Etwas wie folgt aus:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
public class NullableAttribute : Attribute
{
public NullableAttribute(bool nullable)
{
Nullable = nullable;
}
public bool Nullable { get; private set; }
}
public class MyClass
{
[Nullable(false)]
public string MyNonNullableColumnProperty { get; set; }
[Nullable(true)]
public string MyNullableColumnProperty { get; set; }
}
Nun, ich bin ein großer Fan der Verwendung von Klassen, die eher in die .NET-Framework aufgebaut sind als meine eigenen zu bauen. Weiß jemand von so etwas?
Ich fand AllowNullAttribute, aber das scheint nicht nützlich für die Ablehnung von Null.
Eine andere Möglichkeit ist mit dem RequiredAttribute und AllowEmptyString = false
Nur neugierig Einstellung, wenn jemand über so etwas wie ein NullableAttribute
gekommen ist.