我正在使用温莎城堡。我有一个公务舱和配置以下的拦截器:在温莎城堡自定义IDependencyResolver中进行延迟初始化
windsorContainer.Register(Component.For<IMyBusinessInterface>()
.ImplementedBy<MyBusinessClass>()
.Interceptors<MyInterceptorAttribute>()
.LifestyleTransient());
IMyBusinessInterface
和MyBusinessClass
是项目Business
内。 MyInterceptorAttribute
在项目Interceptors
内。 Business
项目参考Interceptors
项目。
MyInterceptorAttribute
用作数据注解上的MyBusinessClass
[MyInterceptorAttribute]
public class MyBusinessClass
{
public IUnitOfWork uow { get; set; }
public MyBusinessClass(IUnitOfWork uow)
{
uow = uow;
}
[MyInterceptorAttribute]
public MyReturnValue MyBusinessMethod(MyArguments arguments)
{
//...
}
}
我需要通过(或检索)的MyInterceptorAttribute
类相同的实例的unit of work
的已在容器内实例化的内部的方法温莎城堡。
在这一刻我传递了两个不同的实例。
我无法检索MyInterceptorAttribute
中的工作单元实例,因为要获取invocation.InvocationTarget我会创建一个循环引用。
public class MyInterceptorAttribute : IInterceptor
{
public void Intercept(IInvocation invocation)
{
IMyBusinessInterface obj = invocation.InvocationTarget as MyBusinessClass; //I cannot do this because of circular reference
//obj.uow = ..
}
}
所以我想通过依赖注入添加工作单位的公共财产MyInterceptorAttribute
内,领取营业类的工作单位的同一个实例......是这样的:
public class MyInterceptorAttribute : IInterceptor
{
public IUnitOfWork uow { get; set; }
public void Intercept(IInvocation invocation)
{
//uow...
}
}
但在这一刻我得到两个不同的实例。是否有可能得到相同的实例修改,例如windsor种姓配置...我想使用DependsOn
或DynamicParameters
或类似的东西?
谢谢