2016-04-26 7 views
0

Ich weiß, wie man das mit Autofac macht, aber nicht mit Castle.Castle Windsor registrieren mehrere Arten einer Basis-Schnittstelle?

public interface IAmBaseInterface {} 
public interface IAmInterface : IAmBaseInterface {...} 
public class AmClass : IAmInterface {...} 

Ich möchte Implementierung AmClass (und alle anderen Implementierungen) mit IAmBaseInterface registrieren. Ist das möglich? Ich habe Folgendes versucht, aber der Typ wurde nicht registriert.

Versucht dies auch, die AutoFac ähneln würde, aber keinen Erfolg.

container.Register(Classes.FromThisAssembly() 
    .Where(t => typeof(IAmBaseInterface).IsAssignableFrom(t)).WithService.AllInterfaces(); 
+0

Ich habe Ihren ersten Versuch versucht, und es funktioniert für mich. Wie lösen Sie auf? – lxalln

Antwort

0

Ich erkannte, dass ich Classes.From benutzt hatte (Typ [] ...) in meinem Code anstatt Classes.FromThisAssembly wie im Beispiel. Anscheinend wird es nicht mehrere Assemblys durchsuchen, um basierend auf Implementierungen zu finden. Ich habe auch festgestellt, dass mehrere Assemblys nicht gescannt werden, um interne Implementierungen zu finden, aber das ist eine Randnotiz.

+0

Es kann beides tun, wenn Sie es explizit angeben. –