1
私はIoCとDIを自分で学習するための少しの例を書いています。 私は1つの簡単な質問があります:あなたは私の例では未熟練労働者をインスタンス化する方法を制御と依存性注入の反転 - あなたのアドバイスが必要です
を/
どのように私は、次の2つの注入候補?:
kernal.Bind<IRepair>().To<Employee>();
kernal.Bind<IRepair>().To<UnskilledWorker>()
私は少しだ間swichすることができます現時点では少し混乱...
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();
}
}
こんにちはジェイソン、あなたの答えをありがとう。私は、kernalを呼び出すことが可能であることを理解しました.GetAll()。したがって、それらを登録してすべてのバインディングのIEnumerableを取得できます。ファクトリパターンもソリューションになる可能性があります。 –
Developer