2010-03-11 131 views
0

我有一個數據庫訪問類的接口(IDbAccess)的具體類,這樣我可以使用Unity它的單元測試。它在Unity中一切正常,現在我想讓具體數據庫類實現IDisposable,以便關閉數據庫連接。使用Unity和接口,我如何創建一個實現IDisposable

我的問題是統一不明白,我的具體類是一次性的,因爲接口(IDbAccess)無法實現另一個接口。

所以,我怎麼能寫這樣的(僞代碼)代碼,以便統一認識到,它需要儘快,因爲我做了處置類?

Using var MyDbAccessInstance = Unity.Resolve<IDbAccess> 
{ 
} 

感謝

瑞安

+0

使用Castle Windsor而不是Unity。它會正確處理這種情況。 – 2010-03-11 21:32:29

+0

不幸的是,應用程序在生產中並不是一個選項,它將變得太多。 – 2010-03-11 22:00:00

回答

1

理論上你可以創建一個新的接口IMyDbAccess它繼承了IDisposable接口和IDbAccess。因此,像

public interface IMyDbAccess : IDbAccess, IDisposable 
{ 
} 

public class MyClass : IMyDbAccess 
{ 
    // Stuff from IDbAccess 

    public void Dispose() 
    { 
    } 
} 

會讓你:

IUnityContainer unityContainer = new UnityContainer(); 

using (var bob = unityContainer.Resolve<IMyDbAccess>()) 
{ 
    // something 
} 

不要忘了你的一生經理變更爲ExternallyControlledLifetimeManager當你註冊的類型,這樣的容器具有弱引用的類。

相關問題