程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 反射學習系列3-反射實例應用(4)

反射學習系列3-反射實例應用(4)

編輯:關於C語言

宿主實現

publicclassHost:IHost
  {
    privateList<ILog>plugins=newList<ILog>();
    #regionIHost成員
    publicList<ILog>Plugins
    {
      get{returnplugins;}
    }
    publicintLoadPlugins(stringpath)
    {
      string[]assemblyFiles=Directory.GetFiles(path,"*.dll");
      foreach(varfileinassemblyFiles)
      {
        Assemblyassembly=Assembly.LoadFrom(file);
        foreach(vartypeinassembly.GetExportedTypes())
        {
          if(type.IsClass&&typeof(ILog).IsAssignableFrom(type))
          {
            ILogplugin=Activator.CreateInstance(type)asILog;
            plugins.Add(plugin);
          }
        }
      }
      returnplugins.Count;
    }
    publicILogGetLog(stringname)
    {
      foreach(variteminplugins)
      {
        if(item.GetType().ToString()==name)
        {
          returnitem;
        }

      }
      returnnull;
    }
    #endregion
  }

ILog的實現和上例基本一樣,請參考

主程序代碼

staticvoidMain(string[]args)
    {
      Host.Hosthost=newHost.Host();
      host.LoadPlugins(".");
      InterfaceLayer.ILoglog=host.GetLog(ConfigurationManager.APPSettings["LogType"].ToString());
      log.Write(newException("異常測試"));
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved