我目前正在开发一个自定义任务,但我遇到了一个问题。
我的自定义任务包含三个文件:
- MBTask 包含实现接口“Task”的类
- 实现接口“IDtsTaskUI”的 MBTaskUI
- MBForm 这是一个表格。
在 Initialize() 函数的 MBTaskUI 中,我接收 TaskHost 对象并将其保存在变量中。然后在 GetView() 函数中将此 TaskHost 发送到我的表单生成器
public void Initialize(TaskHost taskHost, IServiceProvider serviceProvider)
{
this.taskHost = taskHost;
IDtsConnectionService cs = serviceProvider.GetService
(typeof(IDtsConnectionService)) as IDtsConnectionService;
this.connections = cs.GetConnections();
}
public ContainerControl GetView()
{
return new MBForm(this.taskHost, this.connections);
}
它工作得很好,我可以在我的表单中使用这个 TaskHost 在我加载表单时获取参数并在我关闭它时保存它们。
String script_tmp = (String)th.Properties["myScript"].GetValue(th);
SqlConnection conn_tmp = (SqlConnection)th.Properties["myConnection"].GetValue(th);
th.Properties["myScript"].SetValue(th, myScript);
th.Properties["myConnection"].SetValue(th, myConnectionTarget);
因此,当我重新打开任务编辑器时,我使用收到的参数来初始化一些对象。
但是,这是我的问题,在我的 MBTask 类中,我有一个验证参数(myConnection 和 myScript)的 Validate() 函数。并且这些参数始终为空(在我通常使用 MBForm 和 close 函数初始化它之后也是如此。
所以,我不明白为什么我的参数没有被实例化?不就是“th.Properties["myScript"].SetValue(th, myScript);”的工作吗??
myScript 和 myConnection 在我的 MBTask 中被声明为 public。
public class MBTask : Task
{
public SqlConnection myConnection { get; set; }
public String myScript { get; set; }
我知道这些参数已保存,因为我可以在重新打开编辑器时取回它们。那么为什么当我执行 Validate() 时它们为空?
我是否必须从 MBTaskUI 添加到 TaskHost 的链接和来自 MBTask 的链接?
好像这里有什么我不明白的...
谢谢你的帮助,
莱奥·勒琼。