Menggunakan Refleksi dengan Ninject

Pada potongan kode berikut saya menggunakan Refleksi secara langsung untuk menentukan setiap kelas (terletak di "..binaries\plugins") yang mengimplementasikan Iplugin, jadi saya dapat mengikat kelas-kelas tersebut dengan Ninject. Pertanyaan saya adalah apakah ada cara untuk melakukan hal yang sama hanya menggunakan Ninject?.Jika seseorang tahu cara melakukannya dengan Linfu, saya juga akan menghargainya.

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 sumber


Jawaban (1)


Gunakan ekstensi konvensi, tetapi pastikan untuk menggunakan pra-rilis 3.0 RC3.

Di GitHub

Di NuGet

Pastikan untuk melihat < strong>uji integrasi misalnya penggunaan.

person Ian Davis    schedule 06.02.2012