void Start () {
IKernel nKernel = new StandardKernel();
nKernel.Bind<IAnimal>().To(typeof(Dog)).Named("Dog");
nKernel.Bind<IAnimal>().To(typeof(Cat)).Named("Cat");
IAnimal animalInst = nKernel.Get<IAnimal>("Dog");
Debug.LogError($"{animalInst.Name}");
IAnimal animalInst2 = nKernel.Get<IAnimal>("Cat");
Debug.LogError($"{animalInst.Name}");
}
我想在运行时动态实例化IAnimal的子类,我尝试运行此代码,但发生错误 “ IAnimal animalInst2 = nKernel.Get(” Cat“);” => ActivationException:激活浮动时出错 没有匹配的绑定可用,并且类型不是自绑定的。 如何在一个接口上绑定子类?我可以按班级类型或班级名称获取它吗?
答案 0 :(得分:0)
您的Cat
类似乎具有一个带有float
参数的构造函数。 Ninject无法解决此依赖性,因为值类型不可自绑定。
您可以将.WithConstructorArgument
添加到绑定中:
nKernel.Bind<IAnimal>().To(typeof(Cat))
.WithConstructorArgument("myFloatArgName", 0)
.Named("Cat");
或者看看使用provider。