PlugIn
可我們為什麼要給IBuySpy創建PlugIn接口呢?我們要實現同樣的功能
首先需要的是一個通用的IPlugIn接口
namespace ASPNetPortal
public interface IPlugIn {
String Name {get;}
String Version {get;}
void DoAction(IPlugInArgs args);
}
}
這個接口有三個成員
Name屬性
Version屬性
DoAction()方法
然後就是這個IPlugInArgs接口
namespace ASPNetPortal
public interface IPlugInArgs {
System
Object Data {get;}
}
}
它有兩個成員
Context屬性
Data屬性
接著是一個接口集合類
namespace ASPNetPortal
public class PlugInCollection : CollectionBase {
public Int
return this
}
public IPlugIn this[Int
get {
return (IPlugIn) this
}
}
}
}
很簡單明了
PlugIn也可以有很多類型
namespace ASPNetPortal
public interface IPageStartPlugIn : IPlugIn {}
}
這個PlugIn接口不需要再做任何事
根據我們的需求
namespace ASPNetPortal
public class PlugInArgs : IPlugInArgs {
private System
private Object _data;
public PlugInArgs(System
_context = context;
_data = data;
}
public System
get {
return _context;
}
}
public Object Data {
get {
return _data;
}
}
}
}
[NextPage]
我們需要地方來標示用戶嵌入的PlugIn的列表
《ADD key=
value裡面可以寫入嵌入的PlugIn的列表
然後
namespace ASPNetPortal
public class PlugInHelper {
private PlugInHelper() {}
public static PlugInCollection GetPlugIns(String plugInType) {
PlugInCollection plugIns = new PlugInCollection();
String sPageStartPlugIns = System
if ((sPageStartPlugIns != null) && (sPageStartPlugIns !=
String[] asPlugInStr = sPageStartPlugIns
plugIns
}
}
return plugIns;
}
public static void ExecutePlugIns(PlugInCollection plugIns
foreach(IPlugIn plugIn in plugIns) {
plugIn
}
}
}
}
GetPlugIns()方法返回指定類型的PlugIn的列表
最後
private void PerformPlugIns() {
PlugInCollection plugIns = PlugInHelper
PlugInArgs args = new PlugInArgs(Context
PlugInHelper
}
第一句得到所有的Page Start PlugIn
在DesktopDefault
前面兩步已經讓IBuySpy可以嵌入用戶自定義的Page Start PlugIn了
啟動VS
namespace WelcomeMessage {
public class ShowWelcome : ASPNetPortal
public string Name {
get {
return
}
}
public string Version {
get {
return
}
}
public void DoAction(IPlugInArgs args) {
args
}
}
}
這個ShowWelcome類繼承自IPageStartPlugIn
然後我們修改IBuySpy的nfig裡面相關的那句設定
《ADD value=
OK了
From:http://tw.wingwit.com/Article/program/net/201311/13605.html