IFood 인터페이스를 사용하여 IPerson 인터페이스와 HumanFood 및 DogFood 클래스를 사용하는 Human 및 Dog 클래스 구현이있는 경우. 내 주요 기능에서 HumanFood를 DogFood 및 Human to Dog로 전환하는 방법은 무엇입니까?Ninject - 단일 인터페이스를 사용하는 다중 클래스
현재이 방법을 쓰면 "둘 이상의 일치하는 바인딩을 사용할 수 있습니다."오류가 발생합니다.
감사합니다.
this.Bind<IFood>().To<HumanFood>().Named("HumanFood");
또는 바인딩을 결정하기가 WhenInjectedInto에 따라 사용할 :
this.Bind<IFood>().To<HumanFood>().WhenInjectedInto<Human>();
this.Bind<IFood>().To<DogFood>().WhenInjectedInto<Dog>();
그러나이 모두 표현이 작업을 수행하는
public class Bindings : NinjectModule
{
public override void Load()
{
this.Bind<IFood>().To<HumanFood>();
this.Bind<IFood>().To<DogFood>();
this.Bind<IPerson>().To<Human>();
this.Bind<IPerson>().To<Dog>();
}
}
static void Main(string[] args)
{
IKernel kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
IFood food = kernel.Get<IFood>();
IPerson person = kernel.Get<IPerson>();
person.BuyFood();
Console.ReadLine();
}