我已經使用StructureMap超過一年了。而這一切的時候,我曾經有過所謂的IoC的包裝類,它看起來像這樣是否爲您的IoC包裝了一個好主意?
class IoC {
public static T GetInstance<T>()
{
return (T)GetInstance(typeof(T));
}
public static IEnumerable<T> GetAllInstances<T>()
{
return ObjectFactory.GetAllInstances<T>();
}
public static IEnumerable GetAllInstances(Type type)
{
return ObjectFactory.GetAllInstances(type);
}
public static object GetInstance(Type type)
{
return ObjectFactory.GetInstance(type);
}
public static void Inject<T>(T obj)
{
ObjectFactory.Inject(obj);
}
}
我加了包裝假設我可能要在某些時候的路線改變IoC容器。在這一點上,我認爲這是不好的。一個原因是:我不能在我的代碼中使用ObjectFactory來做其他有趣的事情,我必須使用這個包裝器。另一件事是:我們的代碼不應該獨立於DependencyInjection容器。
使用這種方法的優點/缺點是什麼?
[Mark Seemann](http://blog.ploeh.dk/)稱這種包裝爲'符合容器'。他最近寫了一篇關於此的博客文章(http://blog.ploeh。dk/2014/05/19/conforming-container /),他明確地稱這是一種反模式。 – Steven 2014-06-21 14:12:09