反射 PropertyInfo.GetValue

use*_*330 5 c# reflection ssis

我是在 C# 中使用反射的新手。任何帮助深表感谢。

PropertyInfo.GetValue(obj, null) 给了我一个对象值。

如果数据库中列的值为空,我会得到一个空异常:

System.Reflection.TargetInvocationException:调用的目标已抛出异常。Microsoft.SqlServer.Dts.Pipeline.ColumnIsNullException:该列具有空值。

如何处理这种情况?我应该遍历所有列并保留具有空值的列。

小智 5

您应该可以直接检查“Null”,如下所示

if(propInfo.GetValue(this, null) != null) {
    }
Run Code Online (Sandbox Code Playgroud)


vcs*_*nes 3

该属性的 getter 正在抛出异常。它试图告诉您该财产没有价值。

您应该能够首先检查PropertyName_IsNull(其中PropertyName是属性的名称)以检查属性是否为 null。如果为空,请进行适当处理,否则使用您已经编写的代码。

来自MSDN

每个选定输入列的 <column>_IsNull 属性。该属性也是只读或读/写,具体取决于为列指定的使用类型。