我认为你误用了
WithService.FromInterface
使用实现查找子对象
界面例如:如果你有
iSeries设备和IPProductService:
网络接口,
其他接口。当你打电话的时候
将使用IPProductService。有用的
当你想注册的时候
全部的
你的
服务,但不希望指定
你也错过了机会
InterceptorGroup Anywhere
.
这是一个工作示例,我尽可能少地更改了您的示例以使其工作:
[TestFixture]
public class PPTests {
public interface IFoo {
void Do();
}
public class Foo : IFoo {
public void Do() {}
}
public class MyInterceptor : IInterceptor {
public void Intercept(IInvocation invocation) {
Console.WriteLine("intercepted");
}
}
[Test]
public void Interceptor() {
var container = new WindsorContainer();
container.Register(
Component.For<MyInterceptor>().LifeStyle.Transient,
AllTypes.Pick()
.From(typeof (Foo))
.If(t => typeof (IFoo).IsAssignableFrom(t))
.Configure(c => c.LifeStyle.Is(LifestyleType.Transient)
.Interceptors(new InterceptorReference(typeof (MyInterceptor))).Anywhere)
.WithService.Select(new[] {typeof(IFoo)}));
container.Resolve<IFoo>().Do();
}
}