让我们假设我有一些从反射过程创建的 PropertyInfo 对象。
通常我可以通过其 ReflectedType 属性获取内部对象的类型。但如果它被装箱到对象中,我就无法访问它。
var x = property.ReflectedType //Works as charm
var y = ((object)property).ReflectedType // Wouldn't work
我应该如何访问被装箱到对象的 PropertyInfo 的 ReflectedType 属性?
让我们假设我有一些从反射过程创建的 PropertyInfo 对象。
通常我可以通过其 ReflectedType 属性获取内部对象的类型。但如果它被装箱到对象中,我就无法访问它。
var x = property.ReflectedType //Works as charm
var y = ((object)property).ReflectedType // Wouldn't work
我应该如何访问被装箱到对象的 PropertyInfo 的 ReflectedType 属性?
如果您确定您的object引用 a PropertyInfo,然后转换回PropertyInfo并且您可以访问该属性。
var z = ((PropertyInfo)y).ReflectedType
编辑关于您对该问题的附加评论:如果您仍然可以访问您想要执行的属性变量,那么只需使用它......我觉得您对这里的某些事情感到困惑,但您应该提供更多信息,因为除非你这样做,否则没有人能帮助你。
在阅读您对@fish 答案的评论时,这可能是您想要做的:
private static void SetPropertyValue(object v, XElement item, PropertyInfo property)
{
property.SetValue(v, Convert.ChangeType(item.Value, property.PropertyType));
}
这有帮助吗?