우리는 클래스 IoC<TContainer>
을 가지고 있습니다. TContainer
은 클래스를 포함하는 모듈에서 사용하는 모든 IoC 컨테이너를 래핑하는 클래스입니다. 다음과 같이 구현됩니다상속 된 정적 속성 초기화
public class SMIoC : IoC<StructureMapServiceLocator>
{
private SMIoC()
{}
static SMIoC()
{
Container = ... // Initialization
}
}
:
현재public class IoC<TContainer>
where TContainer : IServiceLocator
{
public static TContainer Container { get; set; }
public static T Resolve<T>()
{
return Container.Resolve<T>();
}
public static object Resolve(Type type)
{
return Container.Resolve(type);
}
public static IEnumerable<T> ResolveAll<T>()
{
return Container.ResolveAll<T>();
}
public static IEnumerable ResolveAll(Type type)
{
return Container.ResolveAll(type);
}
}
, 어딘가에는 사용을 단순화하기 위해이
IoC<StructureMapServiceLocator>.Container = ...
처럼 초기화 할 필요가있다,이 같은 클래스를 정의하려 그러나이 작동하지 않습니다 (Earlier question) 및이 잘못된 디자인 제안되었습니다. 어떻게 초기화 (정적 생성자를 사용하거나 다른 메서드를 사용하여) 또는 다른 트릭을 자동화 할 수 있습니까?