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 に答える