Использование отражения с Ninject

В следующем фрагменте кода я использовал Reflection напрямую, чтобы определить каждый класс (расположенный в «..binaries\plugins»), который реализует Iplugin, поэтому я могу связать эти классы с 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);
                }
            }
        }
    }

person Daniel Conde Marin    schedule 06.02.2012    source источник


Ответы (1)


Используйте расширение соглашений, но обязательно используйте предварительную версию 3.0 RC3.

На GitHub

На NuGet

Обязательно ознакомьтесь с < strong>интеграционные тесты например, использование.

person Ian Davis    schedule 06.02.2012