我正在使用 SimpleInjector 进行依赖注入(inject),我刚刚发现我可以在单个调用链中多次注册相同的装饰器,并且装饰器将根据请求的配置应用。例如,我可以插入 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<>));
这是设计使然,因此我可以依赖此功能吗?
最佳答案
Is this by design and therefore can I depend on this feature?
正如您刚刚所示,在链中多次应用装饰器可能很有用,并且在未来版本中更改此行为将是一个重大更改。我可以向您保证,您可以安全地依赖这一点,并且这种行为不会改变。
future 可能发生的是新的 Diagnostics feature得到改进以检测此问题并警告您有多个相同的装饰器。
关于c# - 调用链中同一装饰器的多次注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14952581/