名为Open Generic Type绑定的Ninject绑定绑定两次以进行单个绑定调用

时间:2014-04-22 17:25:26

标签: vb.net ninject

我遇到了一些Ninject绑定代码的问题。

我正在尝试根据绑定名称将开放泛型类型绑定到特定类型。

Sub Main
  dim k as new StandardKernel()
  k.Bind(GetType(SomeService(of))).To(gettype(SomeService(of A))).Named("A")
  k.Bind(GetType(SomeService(of))).To(gettype(SomeService(of B))).Named("B")
  k.Bind(GetType(SomeService(of))).To(gettype(SomeService(of C))).Named("C")

  k.Get(GetType(SomeService(of )), "B") ' Fails because the binding is defined more than once
  k.GetAll(GetType(SomeService(of )), "B") ' Returns two instances of SomeService(of B)

end sub

public class SomeService(of T)
end class

public class A
end class

public class B
end class

public class C
end class

我遇到的问题是每个绑定都被ninject映射两次。

我必须使用命名绑定,因为当我需要解析实例时,我不知道确切的类型。

我的绑定有什么问题?我怎样才能实现我的目标?

您可以使用C#发布答案,因为我精通两种语言。

1 个答案:

答案 0 :(得分:0)

我终于解决了。看来我使用的是Ninject的旧版本,它在开放泛型类型的绑定方面存在问题。

我使用的是3.0.1.10版,升级到3.2.2.0解决了它。

https://github.com/ninject/ninject/issues/92