ninjectを使用すると、コードで次のように型をバインドできます。
Bind<IWarrior>().To<Ninja>();
属性を使用するninjectを使用したコンテキストバインディングについては、これを見てください
クラスを装飾する属性を作成する
class ClimberNeeded : Attribute{}
特定のコンテキストでインターフェースを実装にバインドしますWhenClassHas
Bind<IWarrior>().To<Samurai>().WhenClassHas<ClimberNeeded>();
属性でクラスを飾ります。
[ClimberNeeded]
class MountainousAttack {
[Inject]
IWarrior StandardMountainWarrior { get; set; }
}
ここでStandardMountainWarrior
は a のSamurai
代わりに a になりNinja
ます。
次に、自動登録を備えたさらに優れたTinyIOCがあります:)または次のことができます:
container.Register<IMyInterface, MyImplementation>();
そして、タイプを解決するための巧妙なデリゲートを作成できるようにするfunq 。これは本当にドキュメントが不足しています。しかし、素晴らしいビデオキャストがあります。
もちろん、もっとたくさん。たとえば、すべて「コード内」構成を持つunity、structuremap、およびwindsorです。