英語のブログですが良さげな比較記事を見つけました。
私が知らなかっただけで、DI Containerのパフォーマンス評価としては著名なもののようですが。
個人的にDI Containerへ基本機能や安定性は大前提として、つぎのような条件を満たしてほしいと考えています。
- オブジェクト ライフサイクルのカスタマイズ
- .NET Standard対応
- Xamarin対応
- Generic対応
- Interception機能またはオブジェクト生成の独自定義
2.と3.は一見同じことのようですが、.NET Standardに対応していても動的コード生成が含まれているとXamarinでは動かないため厳密には異なります。
5.はContainer側でInterception機能が提供されていなくても、オブジェクト生成に関与できれば自前で対応が可能だからです。
これらを踏まえて、軽量な物を選ぶとぱっと見
- Grace
- LightInject
- SimpleInjector
あたりに興味を覚えました。ちゃんと調べれば他にも該当する者はありそうですし、UnityやAutofacも現在大幅な改修が行われているので速度的には今後改善されるかもしれません。またコードを見てる訳ではないので、上げたものが本当に良いかどうかも分かりません。
何にしろ前述のブログ記事は、世の中にあふれかえっているDI Containerを選択する指針の一つにはなるんではないかと思いました。
という訳で今回はこれだけです。