.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。
当然还有更多。例如unity,structuremap和windsor都具有“代码内”配置。
关于c# - 与生产者基于注释的DI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11684022/