我需要使用反射来检索特定类型的字段或属性的值。
我不知道是否
我不能做出假设所以我希望用反射来解决这个问题。我希望开发人员会创建这些私有字段......但我不能认为。
如何查找类型为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();
答案 0 :(得分:3)
像这样的东西
const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.DeclaredOnly;
PropertyInfo[] properties = yourType.GetProperties(flags);
FieldInfo[] fields = yourType.GetFields(flags);
var intProperties = properties.Where(x => x.PropertyType == typeof (int));
var intFields = fields.Where(x => x.FieldType == typeof (int));
你也可以这样写(这更贴近你的例子)
const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.DeclaredOnly;
var intProperties = yourType.GetProperties(flags)
.Where(x => x.PropertyType == typeof (int));
var intFields = yourType.GetFields(flags)
.Where(x => x.FieldType == typeof (int));