C# SSIS转换:为什么我获取的对象未设置为实例错误,除非行包装在条件语句中
我通过C# SSIS转换:为什么我获取的对象未设置为实例错误,除非行包装在条件语句中,c#,ssis,C#,Ssis,我通过平面文件源访问文本/平面文件:在转换任务中,我将输入列作为ZipCode,输出别名为:ZipCode。使用类型:读/写: 我创建了一个输出列;特布克南 代码如下所示: 这只是我观察到的行为的一个例子。 这通常发生在我尝试使用某些方法时,如Trim(或length) //This gives me an error message: //Object Not set to instance Of an object public override void Input0_ProcessI
平面文件源
访问文本/平面文件:在转换任务中,我将输入列
作为ZipCode,输出别名为:ZipCode。使用类型:读/写:
我创建了一个输出列
;特布克南
代码如下所示:
这只是我观察到的行为的一个例子。
这通常发生在我尝试使用某些方法时,如Trim(
或length
)
//This gives me an error message:
//Object Not set to instance Of an object
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
string zipCode = (Row.ZipCode.Trim().lenght != 5 ? null : Row.ZipCode.Trim());
}
//This works:
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (!string.IsNullOrEmpty(Row.ZipCode))
{
string zipCode = (Row.ZipCode.Trim().lenght != 5 ? null : Row.ZipCode);
}
}
如果您研究一下自动生成的代码,您会发现ZipCode不是一个基本类型string,而是一个复杂的类型/对象,因为基本类型不支持空值,至少不能很好地支持空值 相反,他们选择做的是创建一个简单的对象,该对象公开一个_IsNull扩展/方法/某物,允许您测试该类型是否为null 编写测试的一种更惯用的方法是(不包括我没有测试空的事实)。您有一个稍微特殊的情况,因为字符串类型有isnullorempty和isnullorwhitespace方法来检查这一点。如果您需要处理其他原语,那么您将非常熟悉_IsNull检查
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (!Row.ZipCode_IsNull))
{
string zipCode = (Row.ZipCode.Trim().length != 5 ? null : Row.ZipCode);
}
}
对不起所有的.NET开发人员。我的术语可能已经过时了。在我整理穿孔卡片时,请随意编辑此答案。谢谢,为什么我必须先检查null?