Comment puis-je déterminer si une propriété est une sorte de tableau.
Exemple :
public bool IsPropertyAnArray(PropertyInfo property)
{
// return true if type is IList<T>, IEnumerable<T>, ObservableCollection<T>, etc...
}
Comment puis-je déterminer si une propriété est une sorte de tableau.
Exemple :
public bool IsPropertyAnArray(PropertyInfo property)
{
// return true if type is IList<T>, IEnumerable<T>, ObservableCollection<T>, etc...
}
Excluant la catégorie String
car elle peut être considérée comme une collection parce qu'elle met en œuvre IEnumerable<char>
.
public bool IsPropertyACollection(this PropertyInfo property)
{
return (!typeof(String).Equals(property.PropertyType) &&
typeof(IEnumerable).IsAssignableFrom(property.PropertyType));
}
Si vous voulez savoir si la propriété est un tableau, c'est en fait très facile :
property.PropertyType.IsArray;
modifier
Si vous voulez savoir si c'est un type qui implémente IEnumerable, comme le font tous les « types de collection », ce n'est pas très compliqué non plus :
return property.PropertyType.GetInterface("IEnumerable") != null;
Pour moi, ce qui suit ne fonctionne pas,
return property.PropertyType.GetInterface(typeof(ICollection<>).FullName) != null;
Suivi fonctionnait,
typeof(ICollection<>).IsAssignableFrom(property.PropertyType.GetGenericTypeDefinition())
C'est un raccourci pour vérifier ICollection<IInterface>
ouICollection<BaseClassInTree>
var property = request as PropertyInfo;
property.PropertyType.IsGenericType && (typeof(ICollection<>).IsAssignableFrom(property.PropertyType.GetGenericTypeDefinition())) && typeof().IsAssignableFrom(property.PropertyType.GenericTypeArguments[0])
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.