C# 装饰不同生活方式的界面
我使用Simple Injector作为IoC容器。SimpleInjector使用C# 装饰不同生活方式的界面,c#,dependency-injection,simple-injector,C#,Dependency Injection,Simple Injector,我使用Simple Injector作为IoC容器。SimpleInjector使用 container.registerWebRequest(); container.RegisterLifetimeScope(); container.Register(()=>container.GetInstance()); //注册为混合PerWebRequest/PerLifetimeScope。 容器。寄存器(()=> { if(HttpContext.Current!=null) 将contain
container.registerWebRequest();
container.RegisterLifetimeScope();
container.Register(()=>container.GetInstance());
//注册为混合PerWebRequest/PerLifetimeScope。
容器。寄存器(()=>
{
if(HttpContext.Current!=null)
将container.GetInstance()作为UnitOfWork返回;
其他的
将container.GetInstance()作为UnitOfWork返回;
});
我希望使用诸如UnitOfWorkAuthorizedCorator
,UnitOfWorkExceptionDecorator
和UnitOfWorkTraceCorator
之类的类来装饰接口IUnitOfWork
。
我应该装饰什么
i工作单元
和IWebUnitOfWork
iReadUnitOfWork
&IUnitOfWork
&IWebUnitOfWork
iReadUnitOfWork
工作单元
- 别的
IUnitOfWork
实例似乎是最直观的:
container.RegisterDecorator(typeof(IUnitOfWork),
typeof(UnitOfWorkAuthoriseDecorator));
container.RegisterDecorator(typeof(IUnitOfWork),
typeof(UnitOfWorkExceptionDecorator));
container.RegisterDecorator(typeof(IUnitOfWork),
typeof(UnitOfWorkTraceDecorator));
装饰其他任何东西都可能会很尴尬,因为在装饰多个接口时,每个接口需要一个装饰器(在您的例子中,每个接口需要3个装饰器)
装饰
UnitOfWork
类是可能的,但可能非常不方便,因为您必须使该类的所有成员都是虚拟的,并在装饰器中重写它们,因为这些装饰器需要从UnitOfWork
继承 对我来说,装饰IUnitOfWork
实例似乎是最直观的:
container.RegisterDecorator(typeof(IUnitOfWork),
typeof(UnitOfWorkAuthoriseDecorator));
container.RegisterDecorator(typeof(IUnitOfWork),
typeof(UnitOfWorkExceptionDecorator));
container.RegisterDecorator(typeof(IUnitOfWork),
typeof(UnitOfWorkTraceDecorator));
装饰其他任何东西都可能会很尴尬,因为在装饰多个接口时,每个接口需要一个装饰器(在您的例子中,每个接口需要3个装饰器)
装饰
UnitOfWork
类是可能的,但可能非常不方便,因为您必须使该类的所有成员都是虚拟的,并在装饰器中重写它们,因为这些装饰器需要从UnitOfWork
继承 谢谢Steven,我想确认一下装饰IUnitOfWork是否足够,因为我觉得这是最整洁的选择。谢谢Steven,我想确认一下装饰IUnitOfWork是否足够,因为我觉得这是最整洁的选择。顺便说一句,你确定你在正确的抽象级别上拦截/装饰吗?它发现装饰一个工作单元是很不寻常的?顺便说一句,你确定你在正确的抽象级别截取/装饰吗?你觉得装饰一件作品很不寻常吗?