Есть ли причина, по которой вы не просто используете задачу скрипта?
Учитывая две переменные служб SSIS, MyObject (тип Object) и MyObjectCount (Int32) установлены в 10.
Сценарий задачи 1 заполняет объект.
// Nothing clever, just fills a List<T> with
// MyObjectCount's worth of values.
public void Main()
{
int count = (Int32)Dts.Variables["User::MyObjectCount"].Value;
List<bool> obj = new List<bool>();
for (int i = 0; i < count; i++)
{
obj.Add(false);
}
Dts.Variables["User::MyObject"].Value = obj;
Dts.TaskResult = (int)ScriptResults.Success;
}
Задача сценария 2 просто присваивает значение переменной SSIS MyObject локальной переменной, которую я преобразовал в соответствующий тип. Я сравниваю это количество с моим количеством ссылок, и они одинаковы.
public void Main()
{
int refCount = (Int32)Dts.Variables["User::MyObjectCount"].Value;
List<bool> obj = Dts.Variables["User::MyObject"].Value as List<bool>;
int actualCount = obj.Count;
string message = string.Format("Reference count: {0}. Actual count {1}", refCount, actualCount);
bool fireAgain = false;
Dts.Events.FireInformation(0, "Accessing count", message, string.Empty, 0, ref fireAgain);
Dts.TaskResult = (int)ScriptResults.Success; Dts.TaskResult = (int)ScriptResults.Success;
}
Результаты
[Счетчик доступа] Информация: Счетчик ссылок: 10. Фактический счетчик 10
Если вы не несете ответственности за то, что толкает объект в переменную SSIS, то вам может потребоваться заключить вышеприведенные извлечения в серию блоков try / catch или привести их к типу, пока вы не найдете что-то время может преобразовать в строго типизированный объект.