C# PropertyInfo.GetValue(myObject,null).GetType()返回;对象引用未设置为对象的实例。”;
我正在尝试将MembershipUserCollection转换为要在GridView中使用的数据集,我有一个helper类,它将循环遍历所有成员资格行和属性,获取值和类型,并将它们放入数据行中 当属性有值时,它工作,但当有空值时,它会中断并返回消息“Object reference not set to a instance of a Object.” 在这个特定的示例中,如果注释字段的值为“null”,则它将在注释字段上中断 以下是我的代码:C# PropertyInfo.GetValue(myObject,null).GetType()返回;对象引用未设置为对象的实例。”;,c#,reflection,properties,propertyinfo,C#,Reflection,Properties,Propertyinfo,我正在尝试将MembershipUserCollection转换为要在GridView中使用的数据集,我有一个helper类,它将循环遍历所有成员资格行和属性,获取值和类型,并将它们放入数据行中 当属性有值时,它工作,但当有空值时,它会中断并返回消息“Object reference not set to a instance of a Object.” 在这个特定的示例中,如果注释字段的值为“null”,则它将在注释字段上中断 以下是我的代码: foreach (PropertyInf
foreach (PropertyInfo oPropertyInfo in PropertyInfos)
{
Type oType = oPropertyInfo.GetValue(oData, null).GetType(); <-- error
oDataRow[oPropertyInfo.Name.ToString()] = Convert.ChangeType(oPropertyInfo.GetValue(oData, null), oType);
}
foreach(PropertyInfo中的PropertyInfo操作属性信息)
{
键入oType=oPropertyInfo.GetValue(oData,null)。GetType();GetType()
是一个实例方法。属性值返回一个对象或null
。对null引用的任何实例方法调用都将导致您收到的错误。GetType()
方法在尝试对null属性(在您的示例中为Comment属性)调用异常时引发异常
您应该改为使用oPropertyInfo.PropertyType
来获取属性类型(无论如何这会更快).OP正在尝试获取oData
的类型
,而不是oPropertyInfo
@hunter:PropertyType
将返回属性定义要保存的类型。这是创建数据表
的正确值,似乎OP正在尝试这样做。@hunter,Type oType=oPropertyInfo.GetValue(oData,null).GetType()
sure看起来像是试图将属性类型设置为me@smartcaveman,我尝试使用oPropertyInfo.PropertyType
,但当值为null时也会引发错误。必须有一种方法来处理null值。@Kahanu,您的错误一定是由Convert.ChangeType引起的(opPropertyInfo.GetValue(oData,null),oType)
propertyInfo.PropertyType
没有绑定到实例为什么要尝试将类型更改为现有类型?这是我在网上获得的代码,现在我查看了它,我不知道为什么会有ChangeType方法。我真的只是尝试获取属性的类型并将其添加到数据行。