0
我们有一个类IoC<TContainer>
其中TContainer
是一个包装我们在包含该类的模块中使用的任何IoC容器的类。它的实现是这样的:初始化继承的静态属性
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 = ...
为了简化使用,我想这样定义一个类:
public class SMIoC : IoC<StructureMapServiceLocator>
{
private SMIoC()
{}
static SMIoC()
{
Container = ... // Initialization
}
}
但是,这不起作用(Earlier question),有人认为这是一个糟糕的设计。我怎么能自动化初始化(使用静态构造函数或其他方法)或其他一些技巧?