.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世界中,使您的代码与容器耦合,这听起来像一个反模式,因为你主要使用容器来减少代码耦合。