2012-02-06 145 views
1

在下面的一段代碼中,我直接使用Reflection來確定實現Iplugin的每個類(位於「..binaries \ plugins」),因此我可以將這些類與Ninject綁定。我的問題是如果有如果有人知道如何用Linfu做到這一點,我也會很感激。在Ninject中使用反射

private void BindDlls(StandardKernel standardKernel) 
    { 
     var pluginsDirectory = Environment.CurrentDirectory + @"\plugins"; 
     var plgDir = new DirectoryInfo(pluginsDirectory); 
     var files = plgDir.GetFiles("*.dll"); 

     foreach (var pluginFileInfo in files) 
     { 
      var pluginAssembly = Assembly.LoadFile(pluginFileInfo.FullName); 
      var pluginFileTypes = pluginAssembly.GetTypes(); 

      foreach (var pluginFileType in pluginFileTypes) 
      { 
       if (pluginFileType.GetInterfaces().Contains(typeof(IPlugin)) && !pluginFileType.IsAbstract) 
       { 
        standardKernel.Bind<IPlugin>().To(pluginFileType); 
       } 
      } 
     } 
    } 

回答