我遇到了一些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#发布答案,因为我精通两种语言。
答案 0 :(得分:0)
我终于解决了。看来我使用的是Ninject的旧版本,它在开放泛型类型的绑定方面存在问题。
我使用的是3.0.1.10版,升级到3.2.2.0解决了它。