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

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

最佳答案

ninject使您可以在代码中像这样绑定类型:

Bind<IWarrior>().To<Ninja>();


对于使用属性的ninject进行上下文绑定,请查看this

创建一个属性来装饰您的班级

class ClimberNeeded : Attribute{}


使用给定的上下文WhenClassHas将接口绑定到实现

Bind<IWarrior>().To<Samurai>().WhenClassHas<ClimberNeeded>();


使用属性装饰您的课程。

[ClimberNeeded]
class MountainousAttack {
    [Inject]
    IWarrior StandardMountainWarrior { get; set; }
}


在这里StandardMountainWarrior将是Samurai而不是Ninja



然后是TinyIOC,它具有自动注册:)更好,或者您可以执行以下操作:

container.Register<IMyInterface, MyImplementation>();




还有funq,它使您可以编写巧妙的委托来解析您的类型。确实缺少文档。但是有一个很好的vidcast



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

关于c# - 与生产者基于注释的DI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11684022/

10-12 05:44