1

.Net 世界中是否有任何简单且不需要太多元数据配置的 DI 框架,例如。使用xml等?

Java 世界的一个很好的例子是 JBoss Weld。使用 Weld,可以有返回对象的生产者方法(可以用自定义注释标记的方法)。上面生成的对象可以在需要的地方注入。这节省了大量的元数据配置。当然 Weld 也需要一个 xml,但它不要求进行广泛的配置。

4

2 回答 2

3

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将是 aSamurai而不是 a Ninja


然后是TinyIOC,它具有自动注册功能,更好 :) 或者您可以这样做:

container.Register<IMyInterface, MyImplementation>();

还有funq,它可以让你编写聪明的委托来解析你的类型。这确实缺乏文档。但是有一个不错的视频广播


当然还有更多。例如unitystructuremapwindsor,它们都具有“代码”配置。

于 2012-07-27T08:28:17.417 回答
1

我也投票给NInject。但现在几乎所有其他用于 .NET 的 IoC 容器都是代码可配置的。我确实建议避免使用注释,而是更喜欢构造函数注入。注释,或者因为我们在 .NET 世界中更好的属性,使您的代码与容器耦合,这听起来像是一种反模式,因为您使用容器主要是为了减少代码耦合。

于 2012-07-27T08:49:53.337 回答