COM 개체의 맨 위에 API를 작성 중이므로 COM 개체를 거의 모든 유형과 정적 메서드로 전달해야하므로 각 부분을 테스트 할 수 있습니다. 내 API.IoC 컨테이너를 사용하는 오버로드 메서드가 있음
이제 내 질문은 COM 개체를 사용하지만 대신 IoC 대신 다른 하나를 전달하는 오버로드 된 메서드가있어서 API 사용자가 전달에 대해 걱정하지 않아도됩니다. COM 개체에서 또는 오버로드 된 메서드를 제거하고 그것을 전달하는 옵션을 사용하여 해결해야합니다.
설명하기 어려운 비트 여기에 예입니다;
구성 자 예;
FooType(IComObject obj,string table) {}
FooType(string table) : this(Ioc.Resolve<IComObject>(), table) {}
하거나
FooType(string table) : this(Ioc.Resolve<IComObject>(), table) {}
정적 메소드 예;
public static SomeType Create(IComObject obj,string table)
{ // Do some work with obj}
public static SomeType Create(string table)
{
return MyClass.Create(Ioc.Resolve<IComObject>(),table);
}
또는 과부하 그냥
public static SomeType Create(string table)
{
IComObject obj = Ioc.Resolve<IComObject>();
return MyClass.Create(Ioc.Resolve<IComObject>(),table);
}
나의 가장 큰 걱정은 그냥 비뚤어진 호출하는 방법을 많이 만들 것이다. 여기에 다른 옵션이 있습니까? 아니면이 문제를 해결하는 올바른 방법입니까?
P.S 실제로 응용 프로그램에서 IComObject의 인스턴스를 전달해야 할 필요가 없어 사용자에게 부담을주고 싶지 않습니다.
다음 질문에서 계속됩니다. http://stackoverflow.com/questions/947378/ioc-vs-global-variable-in-library? – jerryjvl
예, 이런 종류의 오점과 발견 가능성에 대해 더 걱정합니다. –
그리고 내가하고있는 일을하는 것이 맞다면. –