2

我正在使用SimpleInjector进行依赖注入,并且我刚刚发现可以在单个调用链中多次注册相同的装饰器,装饰器将按照请求组态。例如,我可以将我的RepositoryTraceDecorator为我的仓库类的第一个和最后装饰:调用链中同一个装饰器的多次注册

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<>)); 

由设计是本,所以我可以依靠这个功能吗?

回答

2

这是否由设计决定,因此我可以依赖此功能吗?

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

未来可能发生的事情是,新的Diagnostics feature得到改进,检测到这一点,并警告你有多个相同的装饰器。