98
Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName +
": SimplePlugin stopping...");
}
}
// Lớp điều khiển, quản lý việc nạp và thao tác
// các plug-in trong miền ứng dụng của nó.
public class PluginManager : MarshalByRefObject {
// ListDictionary giữ tham chiếu đến các plug-in.
private ListDictionary plugins = new ListDictionary();
// Phương thức khởi dựng mặc định.
public PluginManager() {}
// Phương thức khởi dựng nhận danh sách các plug-in.
public PluginManager(ListDictionary pluginList) {
// Nạp các plug-in đã được chỉ định.
foreach (string plugin in pluginList.Keys) {
this.LoadPlugin((string)pluginList[plugin], plugin);
}
}
// Nạp assembly và tạo plug-in được chỉ định.
public bool LoadPlugin(string assemblyName, string pluginName) {
try {
// Nạp assembly.
Assembly assembly = Assembly.Load(assemblyName);
// Tạo plug-in mới.
IPlugin plugin =