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),有人認爲這是一個糟糕的設計。我怎麼能自動化初始化(使用靜態構造函數或其他方法)或其他一些技巧?