Вы можете получить все свойства типа, используя метод GetProperties
. Затем вы можете отфильтровать этот список, используя метод расширения LINQ Where
. Наконец, вы можете проецировать свойства, используя метод расширения LINQ Select
или удобный ярлык, например ToDictionary
.
Если вы хотите ограничить перечисление свойствами, имеющими тип String
, вы можете использовать этот код:
IDictionary<String, String> dictionary = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead && p.PropertyType == typeof(String))
.ToDictionary(p => p.Name, p => (String) p.GetValue(myObject, null));
Это создаст словарь, который отображает имена свойств в значения свойств. Поскольку тип свойства ограничен String
, можно безопасно привести значение свойства к String
, а тип возвращаемого типа - IDictionary<String, String>
.
Если вместо этого вам нужны все свойства, вы можете сделать это следующим образом:
IDictionary<String, Object> dictionary = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead)
.ToDictionary(p => p.Name, p => p.GetValue(myObject, null));