การใช้การสะท้อนกับ 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