C# 调用链中同一装饰器的多个注册

C# 调用链中同一装饰器的多个注册,c#,dependency-injection,inversion-of-control,simple-injector,C#,Dependency Injection,Inversion Of Control,Simple Injector,我正在使用SimpleInjector进行依赖注入,我刚刚发现我可以在一个调用链中多次注册同一个decorator,decorator将根据请求的配置应用。例如,我可以插入RepositoryTraceCorator作为存储库类的第一个和最后一个装饰器: container.RegisterDecorator(typeof(IRepository<>), typeof(RepositoryTraceDecorator<>)); container.Registe

我正在使用SimpleInjector进行依赖注入,我刚刚发现我可以在一个调用链中多次注册同一个decorator,decorator将根据请求的配置应用。例如,我可以插入RepositoryTraceCorator作为存储库类的第一个和最后一个装饰器:

container.RegisterDecorator(typeof(IRepository<>), 
    typeof(RepositoryTraceDecorator<>));
container.RegisterDecorator(typeof(IRepository<>),
    typeof(RepositoryDetectChangesDecorator<>));
container.RegisterDecorator(typeof(IRepository<>),
    typeof(CrossRepositoryTransactionScopeDecorator<>));
container.RegisterDecorator(typeof(IRepository<>),
    typeof(RepositoryTraceDecorator<>));
container.RegisterDecorator(typeof(IRepository<>),
    typeof(RepositoryExceptionDecorator<>));
container.RegisterDecorator(类型为(IRepository)),
类型(RepositoryTraceDecorator));
容器注册检测器(类型(i存储),
类型(RepositoryDetectChangesDecorator);
容器注册检测器(类型(i存储),
类型(CrossRepositoryTransactionScopeDecorator);
容器注册检测器(类型(i存储),
类型(RepositoryTraceDecorator));
容器注册检测器(类型(i存储),
类型(RepositoryExceptionDecorator));
这是设计的,因此我可以依赖此功能吗

这是设计的,因此我可以依赖此功能吗

正如您刚才所示,在链中多次应用装饰器是很有用的,在将来的版本中更改此行为将是一个突破性的更改。我可以向您保证,您可以安全地依赖于此,并且此行为不会改变

未来可能发生的情况是,新的系统将得到改进,以检测这种情况,并警告您使用多个相同的装饰器