如何使用unity来发出实现装饰依赖的所有接口的装饰器?
Unity允许创建构建感知依赖项。这是通过实施IBuildAware
界面并使用BuilderAwareExtension
在其内部转换为IBuildAware
来完成的。
问题在于,当使用拦截装饰器时,除了已注册的装置之外,它不会实现任何接口。
public interface IFoo
{
void Bar();
}
public class Foo : IFoo, IDisposable
{
public void Bar()
{
throw new Exception();
}
public void Dispose()
{
}
}
container.RegisterType<IFoo, Foo>(
new InterceptionBehavior<PolicyInjectionBehavior>(),
new Interceptor<InterfaceInterceptor>());
因此Unity不会调用Dispose
或OnBuiltUp
/ OnTearingDown
方法。
更新
此拦截器也不会镜像应用于它们属性的公共属性/方法。这可能会破坏使用反射的自定义扩展
TransparentProxyInterceptor
没有这些问题,但它会严重影响性能。
更新2: Related question关于TransparenProxyInterceptor
。
如何统一发出实现所有接口的装饰器并完全镜像装饰依赖的公共成员?