使用Ninject反射

时间:2012-02-06 05:51:51

标签: ninject

在下面的代码中我直接使用Reflection来确定实现Iplugin的每个类(位于“..binaries \ plugins”中),所以我可以用Ninject绑定这些类。我的问题是,如果有一种方法只使用Ninject做同样的事情?。如果有人知道如何用Linfu做这件事,我也会很感激。

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);
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

使用约定扩展,但请务必使用3.0 RC3预发布。

GitHub

NuGet

请务必查看integration tests示例用法。

相关问题