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

这是设计使然,因此我可以依赖此功能吗?

4

1 回答 1

2

这是设计使然,因此我可以依赖此功能吗?

正如您刚才所展示的,在链中多次应用装饰器可能很有用,并且在未来的版本中更改此行为将是一项重大更改。我可以向您保证,您可以安全地依赖它,并且这种行为不会改变。

未来可能发生的是,新的诊断功能会得到改进,以检测到这一点,并警告您有多个相同的装饰器。

于 2013-02-19T09:22:06.750 回答