2010-11-12 67 views
1

难道有人指示我如何使用Ninject创建自定义“注入”属性?Ninject自定义注入属性

我想做到以下几点:

  • InjectView - 自定义的“注入”属性

当此属性的属性是被注入,注入的值是从装一个“ViewManager”类。

我发现了一个与ISelector的例子来决定是否要注入属性/字段,但我无法找到如何添加一个自定义的“注入策略” - 我想委派的注入实际值给我的ViewManager。

回答

4

它已经被支持,可以通过内核的简单配置来完成。

new StandardKernel(new NinjectSettings() { InjectAttribute = typeof(MyOwnInjectAttribute) }; 
+0

嗨,谢谢你的回应。 – user506262 2010-11-13 19:57:27

+0

问题是,这只是支持更改哪个属性用于注入。我想要的是,每个具有此属性的属性都将从“特定提供者”中获取值,并且在决定要注入的值之前还需要访问该属性。例如: [InjectViewRegion(Id = Infrastructure.ViewRegions.Login)] private IViewRegion LoginViewRegion {get;组; } 当为此属性注入值时,我想要访问InjectViewRegion属性,并为指定的“Id”注册视图区域。 再次感谢! – user506262 2010-11-13 20:01:49

3

我通过添加自定义的IInjectionHeuristic来解决这个问题,它允许通过我的自定义属性进行注入。然后我还添加了一个自定义的IBindingResolver,它为每个类型添加了一个额外的绑定,解决了这个绑定有一个条件检查自定义属性,以便它不破坏任何以前的绑定...

Tha绑定创建定制的IBindingResolver会设置一个本地的“ProviderCallback”,它使用提取的属性并将请求传递给一个内部的ViewRegionManager实例。

希望这有助于在任何人想要在未来做类似的事情。