我有一个数据库访问类的接口(IDbAccess),以便我可以使用Unity对其进行单元测试。它在Unity中运行良好,现在我想使具体的数据库类实现IDisposable,以便它关闭数据库连接。
我的问题是Unity不明白我的具体类是一次性的,因为接口(IDbAccess)无法实现另一个接口。
那么如何编写这样的代码(伪代码),以便Unity知道它需要在我完成后立即处理该类?
Using var MyDbAccessInstance = Unity.Resolve<IDbAccess>
{
}
由于
赖安
答案 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,以便容器对类具有弱引用。