4

我正在尝试将 MembershipUserCollection 转换为要在 GridView 中使用的 DataSet,并且我有这个帮助程序类,它将遍历所有成员行和属性并获取值和类型并将它们推入 DataRows。

它在属性有值时工作,但是当有空值时,它会中断返回消息“对象引用未设置为对象的实例。”。

在这个特定的例子中,如果它的值为“null”,它会在 Comment 字段上中断。

这是我发生的代码:

    foreach (PropertyInfo oPropertyInfo in PropertyInfos)
    {
        Type oType = oPropertyInfo.GetValue(oData, null).GetType(); <-- error
        oDataRow[oPropertyInfo.Name.ToString()] = Convert.ChangeType(oPropertyInfo.GetValue(oData, null), oType);
    }

任何帮助表示赞赏。

4

1 回答 1

8

GetType()是一个实例方法。属性值返回 anobjectnull。对空引用的任何实例方法调用都会导致您收到错误。GetType()当您尝试在空属性(在您的情况下为 Comment 属性)上调用 该方法时,该方法会引发异常。

您应该改为使用oPropertyInfo.PropertyType来获取属性类型(无论如何这更快)。

于 2011-04-21T19:37:40.930 回答