1
나는 IoC와 DI를 독자적으로 배우기 위해 약간의 예를 썼습니다. 나는 1 개 개의 간단한 질문이 : 내 예에서 비 숙련 노동자의 인스턴스를 얼마나제어 및 의존성 주입의 반전 - 귀하의 조언이 필요합니다.
을/
방법은 다음과 같은 2 개 분사 후보?
kernal.Bind<IRepair>().To<Employee>();
kernal.Bind<IRepair>().To<UnskilledWorker>()
내가 조금 해요 사이 Switch가 아래로 내려가 있습니다 순간에 혼란 비트 ...
class Program
{
static void Main(string[] args)
{
IWorkShop instance = GetWorkShop();
instance.StartToRepair();
Console.ReadLine();
}
private static IWorkShop GetWorkShop()
{
Ninject.IKernel kernal = new StandardKernel();
kernal.Bind<IWorkShop>().To<WorkShop>();
kernal.Bind<IRepair>().To<Employee>();
var instance = kernal.Get<IWorkShop>();
return instance;
}
}
public class WorkShop : IWorkShop
{
private IRepair _repair;
public WorkShop(IRepair repair)
{
_repair = repair;
}
public void StartToRepair()
{
_repair.RepairItNow();
}
}
interface IWorkShop
{
void StartToRepair();
}
public class Employee : IRepair
{
public void RepairItNow()
{
Console.WriteLine("Employee starts working.");
}
}
public class UnskilledWorker : IRepair
{
public void RepairItNow()
{
Console.WriteLine("Unskilled worker starts working.");
}
}
public interface IRepair
{
void RepairItNow();
}
}
안녕하세요 Jason, 답변 해 주셔서 감사합니다. 나는 Kernal을 부를 수 있다는 것을 알아 냈다. GETAll(). 그래서 당신은 그것들을 등록하고 모든 Bindings의 IEnumerable을 얻을 수 있습니다. 팩토리 패턴도 해결책이 될 수 있습니다. –
Developer