2012-07-27 57 views
0

.Net世界中是否有任何簡單的DI框架,它不需要太多的元數據配置。使用XML等?基於註解的DI與生產者

來自Java世界的一個很好的例子就是JBoss Weld。通過焊接,可以生成返回對象的生成器方法(可以用自定義註釋標記的方法)。上面製作的物體可以在需要的地方注入。這節省了大量的元數據配置。 Ofcourse Weld也需要一個xml,但它沒有強制大量的配置。

回答

2

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,structuremapwindsor,它們都具有「代碼」配置。

1

我也投票給NInject。但是現在幾乎任何其他的.NET的IoC容器都是可配置的代碼。我曾建議避免使用註釋,但更喜歡使用構造函數注入。註釋或更好的屬性,因爲我們在.NET世界中,使您的代碼與容器耦合,這聽起來像一個反模式,因爲你主要使用容器來減少代碼耦合。