나는 개발중인 SDK에있는 내부 종속성을 관리하는 방법을 알아내는 데 어려움을 겪고 있습니다. 어떤 이유로 모든 작업을 수행하기가 어려울 것 같습니다. 내부 의존성 관리
내가이 수업을 말 :class Table
{
Table(string name,IQueryProvider provider, IComObject comobject) {}
}
class TableFactory
{
Table BuildTable(name) <- builds a table object.
}
나는 데 문제가 BuildTable() 메서드 IQueryProvider과 IComObject을 만들고 이름을 통과해야한다는 것입니다. 나는 희망을 (내가 제대로 이해 경우) 서비스 로케이터 패턴하지만이 같은 것을 사용하는 경우 어떻게 구현 :
BuildTable(string name)
{
IQueryProvider provider = ServiceLocator.GetInstance<IQueryProvider>();
IComObject comobject = ServiceLocator.GetInstance<IComObject>();
Table tab = new Table(name,provider,comobject);
return tab;
}
을 그것은 지금은 만드는 ServiceLocator에 IQueryProvider 및 IComObject 모두 가지고해야한다는 의미 내 의존성을보고 테스트하기가 어렵습니다. 그래서 나는이 같은 개체 및 공장 무언가의 다른 유형을 만들 종속성 공장을 만들어 :
class DependencyFactory
{
Table BuildTable(string name)
{
//call other BuildMethods to create objects.
//return new Table.
}
//Other Build methods for things like IQueryProvider, IComObject.
}
가 나는 단지 내 서비스 로케이터에 DependencyFactory을 등록해야하고 단지 방법을 구축 호출합니다.
이 냄새가 좋지 않습니까?
내 첫 번째 BuildTable 메서드는 괜찮습니까, 아니면 관련이 있습니다.
하지만 여전히 정말 볼 수 없다는 문제가 해결되지 않습니다
일반적인 DI 컨테이너는 내부 의존성. 그러나 다시 SDK 내부에 있으므로 필요한 유형을 알고 있습니다. 뭘 해야할지. –