我有一个库,它依靠它接收的类的PropertyInfo(获取和设置值)进行一堆反射工作。获取动态对象的PropertyInfo
现在我想能够使用动态对象,但我找不到如何获取动态属性的PropertyInfo。我已经检查了替代方案,但对于那些我需要随处更改使用PropertyInfo来获取/设置值的人。
dynamic entity = new ExpandoObject();
entity.MyID = 1;
// - Always null
PropertyInfo p = entity.GetType().GetProperty("MyID");
// - Always null
PropertyInfo[] ps = entity.GetType().GetProperties();
// - These are called everywhere in the code
object value = p.GetValue(entity);
p.SetValue(entity, value);
是否有可能获得或以某种方式创建的PropertyInfo只是为了能够使用它的GetValue()
和SetValue()
动态对象?
我无法重现这一点。你确定属性MyID存在于实体上并且是公共的吗? –
@DavidL对不起,我会发布一个更好的例子。这是一种动态,所以财产只有在已经确定并且是公开的情况下才会存在。 – Danicco
请注意,它可能不是一个实际的属性。通过将运行时绑定重定向到名称/值字典,某些类型像“ExpandoObject”_simulate_属性。 –