나는 너희들에게 도움이 필요하다. 현재 콘솔 애플리케이션의 Dependency Injection 작업을하고 있습니다. 단일 클래스에서는 의존성 주입을 이해하기 위해 3 개의 계층을 정의했습니다. 실제로 Oracle 또는 Sql 요구 사항을 기반으로 할 수있는 데이터 acess 레이어의 객체를 주입하려고합니다.하지만 어떤 계층에 등록을 기반으로 주입이 일어나고 있습니다. 어떤 사람들이 내가 어떻게 적절한 주사를 할 수 있는지 말해 줄 수 있습니까?종속성 주입이 마지막 객체를 등록하는 이유는 무엇입니까?
UI 층 :
class Program
{
static void Main(string[] args)
{
IUnityContainer objconatiner = new UnityContainer();
objconatiner.RegisterType<Customer>();
objconatiner.RegisterType<IDal, SqlserverDal>();
objconatiner.RegisterType<IDal, OracleServerDal>();
Customer ocust = objconatiner.Resolve<Customer>();
ocust.CustName = "Taylor Swift";
ocust.Add();
}
}
MIDDLE 층 :
public class Customer
{
private IDal oidal;
public string CustName { get; set; }
public Customer(IDal idal)
{
oidal = idal;
}
public void Add()
{
oidal.Add();
}
}
DAL 층 : 이름 등록 재생에 오는 곳
public interface IDal
{
void Add();
}
public class SqlserverDal : IDal
{
public void Add()
{
Console.Write("Now using Sql server");
}
}
public class OracleServerDal : IDal
{
public void Add()
{
Console.Write("Now using Orcale server");
}
}
해결하려는 항목을 컨테이너가 알기를 어떻게 기대합니까? 일부 구성을 검사해서 해당 구현 중 하나만 등록하면 안됩니까? –
하지만 새로운 Dal 레이어를 호출하기를 원한다면 어떻게해야할까요? 구성에 기반하여 종속성을 주입하는 방법을 묻는 것입니다. 모든 오브젝트를 통합 컨테이너에 등록해야 모든 dal 레이어를 등록해야합니다. . 근데 내가 어떻게 구성 부분을 통과 했니? – aksh1989
@ aksh1989 같은 앱을 실행하는 동안 SQL과 Oracle이 모두 필요한지 여부는 알 수 없습니다. 조건을 기반으로 주입하거나 애플리케이션 수명을 사용하십시오. – niksofteng