ในโค้ดต่อไปนี้ ฉันใช้ 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);
}
}
}
}