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