nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Visual Studio and Development Technologies。なお掲載内容は個人の見解であり、所属する企業を代表するものではありません。

良さげなDI Containerの比較記事を見つけた

英語のブログですが良さげな比較記事を見つけました。

www.palmmedia.de

私が知らなかっただけで、DI Containerのパフォーマンス評価としては著名なもののようですが。

github.com

個人的にDI Containerへ基本機能や安定性は大前提として、つぎのような条件を満たしてほしいと考えています。

  1. オブジェクト ライフサイクルのカスタマイズ
  2. .NET Standard対応
  3. Xamarin対応
  4. Generic対応
  5. Interception機能またはオブジェクト生成の独自定義

2.と3.は一見同じことのようですが、.NET Standardに対応していても動的コード生成が含まれているとXamarinでは動かないため厳密には異なります。

5.はContainer側でInterception機能が提供されていなくても、オブジェクト生成に関与できれば自前で対応が可能だからです。

これらを踏まえて、軽量な物を選ぶとぱっと見

  • Grace
  • LightInject
  • SimpleInjector

あたりに興味を覚えました。ちゃんと調べれば他にも該当する者はありそうですし、UnityやAutofacも現在大幅な改修が行われているので速度的には今後改善されるかもしれません。またコードを見てる訳ではないので、上げたものが本当に良いかどうかも分かりません。

何にしろ前述のブログ記事は、世の中にあふれかえっているDI Containerを選択する指針の一つにはなるんではないかと思いました。

という訳で今回はこれだけです。