使用Unity和接口,如何创建实现IDisposable的具体类

时间:2010-03-11 20:57:47

标签: unity-container idisposable

我有一个数据库访问类的接口(IDbAccess),以便我可以使用Unity对其进行单元测试。它在Unity中运行良好,现在我想使具体的数据库类实现IDisposable,以便它关闭数据库连接。

我的问题是Unity不明白我的具体类是一次性的,因为接口(IDbAccess)无法实现另一个接口。

那么如何编写这样的代码(伪代码),以便Unity知道它需要在我完成后立即处理该类?

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

由于

赖安

1 个答案:

答案 0 :(得分: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,以便容器对类具有弱引用。