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>