全局變量,所以說,我有型,需要一些參數構造函數,像這樣:的IoC VS庫
public MyType(IComObject wrapper,string table) {}
現在IComObject是在兩個不同的COM對象的包裝。所有(90%)我的類型必須使用 IComObject,所以在良好的DI方式(以便測試)中,我將IComObject傳遞給每個需要它的類型。
主要問題是,當有人去使用我的COM包裝庫時,必須將IComObject的一個實例傳遞給它所做的所有事情,這使得代碼有點難以管理和維護。
我想知道是否應該使用IoC容器或用戶可以設置的全局變量,以便它們不必傳遞IComOject實例。例如:
public MyType(string table)
: this(IoC.Resolve<IComObject>,table) {}
或
public MyType(string table)
: this(StaticClass.ComInstance,table) {}
這樣用戶可以這樣做:
//Set up Ioc container
COMObject object = new COMObject();
Ioc.Register(typeof(IComObject),object);
MyType mytype = new MyType("test.tab");
或
COMObject object = new COMObject();
StaticClass.ComInstance = object;
MyType mytype = new MyType("test.tab");
你覺得我應該在這種情況下做?
我只是擔心讓用戶不得不擔心設置IoC容器。 – 2009-06-03 21:38:29