Vous pouvez obtenir toutes les propriétés d'un type à l'aide de la GetProperties
méthode. Vous pouvez filtrer cette liste en utilisant LINQ Where
méthode d'extension. Enfin, vous pouvez projeter les propriétés à l'aide de LINQ Select
méthode d'extension ou un raccourci pratique comme ToDictionary
.
Si vous souhaitez limiter l'énumération des propriétés de type String
vous pouvez utiliser ce code:
IDictionary<String, String> = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead && p.PropertyType == typeof(String))
.ToDictionary(p => p.Name, p => (String) p.GetValue(myObject, null));
Cela va créer un dictionnaire qui mappe les noms de propriété à la propriété des valeurs. Comme le type de propriété est limitée à String
il est sûr d'exprimer la valeur de la propriété à l' String
et le type de retour est de type IDictionary<String, String>
.
Si vous voulez toutes les propriétés que vous pouvez le faire comme ceci:
IDictionary<String, Object> = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead)
.ToDictionary(p => p.Name, p => p.GetValue(myObject, null));