我是C#中使用反射的新手。非常感谢任何帮助。
PropertyInfo.GetValue(obj,null)给我一个对象值。
如果数据库中列的值为null,则会出现Null异常:
System.Reflection.TargetInvocationException:调用目标抛出了异常。 Microsoft.SqlServer.Dts.Pipeline.ColumnIsNullException:该列具有空值。
如何处理这种情况?我应该遍历所有列并保留具有空值的列。
答案 0 :(得分:3)
您应该能够直接检查'Null',如下所示
if(propInfo.GetValue(this, null) != null) {
}
答案 1 :(得分:2)
该财产的吸气者正在抛出一个除外。它试图告诉你该财产没有价值。
您应该能够检查PropertyName_IsNull
(其中 PropertyName 是属性的名称)以检查属性是否为空。如果它为null,请正确处理,否则使用您已编写的代码。
来自MSDN:
每个选定输入列的< column> _IsNull属性。此属性也是只读或读/写,具体取决于为列指定的使用类型。
答案 2 :(得分:2)
PropertyInfo.GetValue(obj, null)
正在对象obj
上执行属性get方法。在get方法中抛出异常。您需要查看正在调用的属性get方法,并确定何时/为什么抛出异常。