从对象开箱时访问PropertyInfo的ReflectedType

本文关键字:PropertyInfo ReflectedType 访问 对象 | 更新日期: 2023-09-27 18:04:56

假设我从反射过程中创建了一些PropertyInfo对象。

通常我可以通过它的ReflectedType属性获得内部对象的类型。但如果它被装箱成对象,我就不能访问它。

var x = property.ReflectedType //Works as charm
var y = ((object)property).ReflectedType // Wouldn't work

我应该如何访问PropertyInfo的ReflectedType属性被框到对象?

从对象开箱时访问PropertyInfo的ReflectedType

如果您确定您的object引用了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));
}

有帮助吗?