【发布时间】:2026-02-01 14:30:02
【问题描述】:
我有一个脚本任务,它创建一个自定义对象列表并将它们设置为一个 SSIS 对象变量。
自定义类:
public class Dog
{
public string Name { get; set; }
}
填充列表并设置为 SSIS 对象变量“myDogs”的代码:
public void Main()
{
List<Dog> dogs = new List<Dog>();
Dog dog1 = new Dog();
dog1.Name = "Fido";
Dog dog2 = new Dog();
dog1.Name = "Roofus";
dogs.Add(dog1);
dogs.Add(dog2);
Dts.Variables["myDogs"].Value = dogs;
}
在第二个脚本任务中,我试图将“myDogs”对象变量读回列表:
在第二个脚本任务中复制的自定义类:
public class Dog
{
public string Name { get; set; }
}
我的第二个脚本任务中的主要代码:
public void Main()
{
var varDogs = Dts.Variables["myDogs"].Value;
List<Dog> dogs = new List<Dog>();
dogs = (List<Dog>)varDogs;
}
我的 varDogs 对象正确加载了我的 SSIS 对象变量“myDogs”中的数据。但是,当我尝试将 varDogs 转换为 Dog 类型的列表时,我收到一条错误消息,提示“无法转换 System.Collections.Generic.List 类型的对象”。
有谁知道我如何将这个 var 数据转换回列表?谢谢。
【问题讨论】:
-
我怀疑您的问题将与 Dog 类的序列化有关,但今天没有时间查看它。也许它正在将 dog 实例的浅拷贝与深层拷贝添加到通用列表中。或者您需要为您的类提供一些显式序列化(因为.NET 认为它们是两个不同的类对象,即使它们具有相同的定义),我不知道。而且我今天没有有时间深入研究它。我不。大脑,真的,我不。如果您只是尝试将 Dog 的实例添加到您的变量并在另一个脚本中反序列化,您将得到相同的错误。
-
将其转换为数据表并以这种方式使用。
标签: c# ssis script-task