için Autofac Tarama Meclisleri Autofac'ı kullanmaya başladım ve bazı DLL'leri taramak ve bunların içindeki bazı sınıfları kaydetmek için Autofac'ı almak istiyorum.Bazı sınıf tipi
Bir PluginBase sınıfından, ancak aşağıdaki koddan devraldığım tüm sınıflar, bunları kaydettiriyor gibi görünmüyor. Biri yardım edebilir mi? Bir işaretleyici arayüz olarak IDependency
kullanmak Bu kodda
builder
.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
.Where(t => t.GetInterfaces()
.Any(i => i.IsAssignableFrom(typeof (IDependency))))
.AsImplementedInterfaces()
.InstancePerDependency();
: Belki do
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(assemblies)
.Where(t => t.BaseType == typeof(PluginBase))
.AsImplementedInterfaces()
.AsSelf();
var container = builder.Build();
var pluginClasses = container.Resolve<IEnumerable<PluginBase>>();
//pluginClasses is empty!!!!
Daha yeni sınıflar için AsImplementedInterfaces ekleyebilir miyim? Arayüzleri uygular mı? – Jon
Bu iki aramanın birlikte çalışması gerektiğini düşünüyorum. ts taban tipi ve uyguladığı tüm arayüzler. – Jehof
Hata! Sadece yazdıklarımı tekrar okudum ve anlamlı değil. PluginBase'den miras alan bir sınıfım varsa ve bir arabirimin yapıcı bir argümanı varsa, bu AsImplementedInterfaces ile bile çalışmaz. Yeni bir üretici kaydı mı yaparım yoksa mevcut kodu değiştirebilir miyim? – Jon