Ninject.Extensions.Conventions'ın önceki sürümlerinde, derlemeler için bir dizin taraması, arabirimlerle filtre sınıfları taraması ve sonra da tüm içeriğindeki dizme modüllerini yüklemek oldukça kolaydı. Ben en yeni sürüme son zamanlarda güncellenen sonraNinject -> Uyumlu arabirimler için taramaları birleştirme ve modüller olarak yükleme
kernel.Scan(scanner =>
scanner.FromAssembliesInPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
scanner.AutoLoadModules();
scanner.WhereTypeInheritsFrom<IPlugin>());
public class MyPlugin : NinjectModule, IPlugin {
public override void Load() {
Bind<IRepositoryFromPluginHost>().To<MyPluginImpl>().Named("special");
}
}
Ancak, arayüzler tarafından
- Otomatik yük modüllerine edemiyorum
mu Bunun için herkesin bir çözümü var mı?
Evet, ama tam olarak istediğim şey bu değil. Örneğiniz tüm sınıfları, belirli bir arabirimden miras alan ve varsayılan arabirime bağlanan belirli bir yoldaki derlemelerden yükler. Bununla birlikte, yapmak istediğim şey, Ninject modüllerini, ciltleme talimatlarının içinde bulunduğu montajlardan eklentiler olarak yüklemektir. – Acrotygma
Üzgünüm, yanlış anladım. Bunu başarmanın bir yolu olup olmadığını araştıracağım. Varsayılan olarak Ninject StandardKernel, ´Ninject.Extensions.´ ile başlayan derlemelerde tüm ´IModule´leri otomatik olarak yükler, böylece kod erişilebilir olabilir. – BatteryBackupUnit
Üzgünüm, beni çok uzun sürdü. Eklentileri nasıl kullandığımızı göstermek için cevabı güncelledik. Fazladan IPlugin bağlantılarının etrafta gezinmesini istemiyorsanız, Eric'in cevabı ile giderdim. – BatteryBackupUnit