Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 装饰不同生活方式的界面_C#_Dependency Injection_Simple Injector - Fatal编程技术网

C# 装饰不同生活方式的界面

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

我使用Simple Injector作为IoC容器。SimpleInjector使用

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是否足够,因为我觉得这是最整洁的选择。顺便说一句,你确定你在正确的抽象级别上拦截/装饰吗?它发现装饰一个工作单元是很不寻常的?顺便说一句,你确定你在正确的抽象级别截取/装饰吗?你觉得装饰一件作品很不寻常吗?