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>

上一篇:向Kubernetes集群删除Node


下一篇:Linux入门进阶第二天——软件安装管理(上)