Мне нужно использовать отражение для получения значений поля или свойства для определенного типа.Как использовать отражение для получения всех полей и/или свойств для определенного типа?
Я не знаю, если
- это поле
- это свойство
- либо из вышеперечисленного являются частными или публичными.
Я не могу делать предположений, поэтому я надеялся использовать отражение, чтобы решить эту проблему. Я в надежде, что разработчики сделают эти частные поля ... но я не могу этого допустить.
Как найти все поля/свойства для типа Foo
, который имеет .. сказать .. int
?
.NET v 4.0 или 4.5 пожалуйста. Linq также приемлемо :)
Я хочу что-то вроде этого псевдокода:
var property = source.GetType()
.GetProperties(BindingFlags.GetField | BindingFlags.NonPublic)
.Where(x => x.PropertyType == typeof (int))
.ToList();
Теперь, когда вы редактировали какой-то код, в чем проблема с этим кодом? –
"sorta like this"? Что еще вы хотите? – Luaan
Если вы используете 'GetProperties (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)', вы получите как общедоступные, так и непубличные свойства экземпляра. Вам также нужно вызвать 'GetFields' с тем же. Вы также можете вызвать 'GetMembers', но его немного сложнее использовать, если вам нужно фильтровать типы свойств и типы полей. –