为SSIS编写自定义任务项(Task)之高级篇
2009-09-19 00:00:00 来源:WEB开发网上一篇我们已经实现了一个自定义的编辑窗口,但里面没有任何内容,我们也没有真正为其保存属性。这一篇我们将完成这个任务项。
1. 为任务添加几个自定义属性
#region 属性
private string source = string.Empty;
public string Source { get{return source;} set{source=value;}}
private string target = string.Empty;
public string Target { get { return target; } set { target = value; } }
private string xpath = string.Empty;
public string Xpath { get { return xpath; } set { xpath = value; } }
private string defs = string.Empty;
public string Namespacedefs { get { return defs; } set { defs = value; } }
#endregion
【特别注意】这里的属性必须是按照上面的写法。如果用VS2008的简写方式,则会无效
所谓VS 2008的简写方式,是类似下面这样。 我测试发现这样写是不行的,总是报告未将对象设置到引用实例。
public string Source { get; set; }
2. 为任务项添加持久化支持
方法是,为任务项实现IDTSComponentPersist接口
#region IDTSComponentPersist 成员
/// <summary>
/// 从包的那个XML文件中加载属性
/// </summary>
/// <param name="node"></param>
/// <param name="infoEvents"></param>
public void LoadFromXML(System.Xml.XmlElement node, IDTSInfoEvents infoEvents)
{
try
{
Source = node.SelectSingleNode("Source").InnerText;
Target = node.SelectSingleNode("Target").InnerText;
Xpath = node.SelectSingleNode("Xpath").InnerText;
Namespacedefs = node.SelectSingleNode("NamespaceDefs").InnerText;
}
catch
{
throw;
}
}
/// <summary>
/// 将自定义属性保存到包中
/// </summary>
/// <param name="doc"></param>
/// <param name="infoEvents"></param>
public void SaveToXML(System.Xml.XmlDocument doc, IDTSInfoEvents infoEvents)
{
XmlElement taskElement = doc.CreateElement("MyXMLTask");
XmlElement source = doc.CreateElement(string.Empty, "Source", string.Empty);
source.InnerText = this.Source;
XmlElement target = doc.CreateElement(string.Empty, "Target", string.Empty);
target.InnerText = this.Target;
XmlElement xpath = doc.CreateElement(string.Empty, "Xpath", string.Empty);
xpath.InnerText = this.Xpath;
XmlElement def = doc.CreateElement(string.Empty, "NamespaceDefs", string.Empty);
def.InnerText = this.Namespacedefs;
taskElement.AppendChild(source);
taskElement.AppendChild(target);
taskElement.AppendChild(xpath);
taskElement.AppendChild(def);
doc.AppendChild(taskElement);
}
#endregion
更多精彩
赞助商链接