.Net世界中是否有任何簡單的DI框架,它不需要太多的元數據配置。使用XML等?基於註解的DI與生產者
來自Java世界的一個很好的例子就是JBoss Weld。通過焊接,可以生成返回對象的生成器方法(可以用自定義註釋標記的方法)。上面製作的物體可以在需要的地方注入。這節省了大量的元數據配置。 Ofcourse Weld也需要一個xml,但它沒有強制大量的配置。
.Net世界中是否有任何簡單的DI框架,它不需要太多的元數據配置。使用XML等?基於註解的DI與生產者
來自Java世界的一個很好的例子就是JBoss Weld。通過焊接,可以生成返回對象的生成器方法(可以用自定義註釋標記的方法)。上面製作的物體可以在需要的地方注入。這節省了大量的元數據配置。 Ofcourse Weld也需要一個xml,但它沒有強制大量的配置。
有ninject讓你綁定你的類型,像這樣的代碼:
Bind<IWarrior>().To<Ninja>();
的情境與使用屬性看看this
創建一個屬性與
來裝飾你的類ninject結合class ClimberNeeded : Attribute{}
將接口綁定到具有給定上下文的實現WhenClassHas
Bind<IWarrior>().To<Samurai>().WhenClassHas<ClimberNeeded>();
用屬性裝飾你的班級。
[ClimberNeeded]
class MountainousAttack {
[Inject]
IWarrior StandardMountainWarrior { get; set; }
}
這裏StandardMountainWarrior
將是一個Samurai
而不是Ninja
。
再有就是TinyIOC它甚至更好它有autoRegister的:),或者你可以這樣做:
container.Register<IMyInterface, MyImplementation>();
而且funq,它可以讓你寫聰明的代表,以解決您的類型。這是真的缺乏文件。但有一個不錯的vidcast。
以及更多當然。例如unity,structuremap和windsor,它們都具有「代碼」配置。
我也投票給NInject。但是現在幾乎任何其他的.NET的IoC容器都是可配置的代碼。我曾建議避免使用註釋,但更喜歡使用構造函數注入。註釋或更好的屬性,因爲我們在.NET世界中,使您的代碼與容器耦合,這聽起來像一個反模式,因爲你主要使用容器來減少代碼耦合。