c# – Ninject 2.0 – 绑定到多次使用同一接口的对象?

c# – Ninject 2.0 – 绑定到多次使用同一接口的对象?,第1张

概述考虑以下: public Something(IInterface concreteObjectOne, IInterface concreteObjectTwo) { this.concreteObjectOne = concreteObjectOne; this.concreteObjectTwo = concreteObjectTwo; } 考虑以下:
public Something(IInterface concreteObjectOne,IInterface concreteObjectTwo)     {        this.concreteObjectOne = concreteObjectOne;        this.concreteObjectTwo = concreteObjectTwo;    }

如何设置此类绑定与Ninject?我试着用谷歌搜索这个词,但由于我不知道这叫做什么我不能,也无法在Wiki上找到任何关于此的内容.

编辑:

我相信这称为基于约定的绑定,如here所述.但是,此文档适用于版本1.0和2.0没有Only方法.我希望这可以在没有属性的情况下实现 – 使用名称约定或类似的东西.

解决方法 除了使用“仅”方法之外,本文还通过为注入的对象指定不同的属性来提出另一种解决方案.

例:

public class ObjectOneAttribute : Attribute{}  public class ObjectTwoAttribute : Attribute{}

然后

public Something([ObjectOneAttribute] IInterface concreteObjectOne,[ObjectTwoAttribute] IInterface concreteObjectTwo)     {        this.concreteObjectOne = concreteObjectOne;        this.concreteObjectTwo = concreteObjectTwo;    }

当您想要将接口绑定到正确的具体对象时,请使用“WhereTargetHas”方法:

Bind<IInterface>().To<YourConcreteTypeOne>().WhereTargetHas<ObjectOneAttribute>();Bind<IInterface>().To<YourConcreteTypeTwo>().WhereTargetHas<ObjectTwoAttribute>();

更新:不使用属性的解决方案:
使用方法“When”:

Bind<IInterface>().To<YourConcreteTypeOne>().When(r => r.Target.name == "concreteObjectOne");  Bind<IInterface>().To<YourConcreteTypeTwo>().When(r => r.Target.name == "concreteObjectTwo")

;

总结

以上是内存溢出为你收集整理的c# – Ninject 2.0 – 绑定到多次使用同一接口的对象?全部内容,希望文章能够帮你解决c# – Ninject 2.0 – 绑定到多次使用同一接口的对象?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1240352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存