Afin de vérifier si un Type
( propertyType
) est nullable, je l'utilise :
bool isNullable = "Nullable`1".Equals(propertyType.Name)
Existe-t-il un moyen d'éviter l'utilisation de chaînes magiques ?
Afin de vérifier si un Type
( propertyType
) est nullable, je l'utilise :
bool isNullable = "Nullable`1".Equals(propertyType.Name)
Existe-t-il un moyen d'éviter l'utilisation de chaînes magiques ?
Absolument - utilisez Nullable.GetUnderlyingType
:
if (Nullable.GetUnderlyingType(propertyType) != null)
{
// It's nullable
}
Notez que cela utilise la classe statique non générique System.Nullable
plutôt que la structure générique Nullable<T>
.
Notez également que cela vérifiera si elle représente un spécifique (fermé) nullable... cela ne fonctionnera pas si vous l'utilisez sur un type de valeur Générique type, par exemple
public class Foo<T> where T : struct
{
public Nullable<T> Bar { get; set; }
}
Type propertyType = typeof(Foo<>).GetProperty("Bar").PropertyType;
// propertyType is an *open* type...
Utilisez le code suivant pour déterminer si un objet Type représente un type Nullable. Rappelez-vous que ce code renvoie toujours false si l'objet Type a été renvoyé par un appel à GetType.
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) {…}
expliqué au lien MSDN ci-dessous :
http://msdn.microsoft.com/en-us/library/ms366789.aspx
De plus, il y a une discussion similaire à ce SO QA :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.