lenmom

博客园 首页 新随笔 联系 订阅 管理

1. Attribute声明方式

定义扩展点:

[TypeExtensionPoint]
public interface ICommand
{
        void Run();
}

定义扩展:

[Extension]    

public class TraceCommand : ICommand    

{       

        public void Run()        

       {            

             Console.WriteLine("Trace output");        

       }

}

 

使用方式为:

foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes(typeof(ICommand)))
{
        ICommand cmd = node.CreateInstance() as ICommand;
        cmd.Run();
}

 

2.xml声明方式

定义接口:

public interface ICommand
{
        void Run();
}

 

实现该接口的类:

public class TraceCommand : ICommand    

{       

        public void Run()        

       {          

              Console.WriteLine("Trace output");   

       }

}

xml声明扩展点

  <!--没有显示实现了扩展节点(ExtensionNode)的配置方法 设置对应节点的objectType属性-->
  <ExtensionPoint path="/DataExtensionPointMenifest/ICommand"  name="ICommand">
       <ExtensionNode name="Command" objectType="ICommand"/>
  </ExtensionPoint>

注:扩展节点也可以定义成这样:

       <ExtensionNode name="Command" />

即不指定objectType。

 

每个扩展点都必须定义包含扩展节点元素

 

定义扩展:

  <Extension path = "/DataExtensionPointMenifest/ICommand">
    <Command  type="TraceCommand" />

    <Command  class="DataExtensionAddin.ConsoleCommand" />
  </Extension>

posted on 2014-03-14 10:52  老董  阅读(450)  评论(1编辑  收藏  举报