zoukankan      html  css  js  c++  java
  • Mono addin 学习笔记 5 TypeExtensionPoint

    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>

  • 相关阅读:
    selenium 资料
    SpringMVC上传文件总结
    java 获取当天(今日)零点零分零秒
    存储过程实例基于postgersql
    为webService添加Interceptor(拦截器)
    spring+redis实例(二)
    hibernate字段映射枚举类型
    WordPress 在Ubuntu下安装插件、主题输入FTP后无法创建目录
    spring + redis 实例(一)
    mybatis字段映射枚举类型
  • 原文地址:https://www.cnblogs.com/lenmom/p/3598943.html
Copyright © 2011-2022 走看看