c# – 使用Unity在多个类型中注入相同的DataContext实例

发布时间:2020-01-05 发布网站:大佬教程
大佬教程收集整理的这篇文章主要介绍了c# – 使用Unity在多个类型中注入相同的DataContext实例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有IRepository接口及其实现SqlRepository,它将LINQ作为参数作为SQL DataContext的参数.假设我有IService接口及其实现服务,它需要三个IRepository,IRepository和IRepository.演示代码如下:
public interface IRepository<T> { }

public class SqlRepository<T> : IRepository<T>
{
    public SqlRepository(DataContext dc) { ... }
}

public interface IService<T> { }

public class Service<T,T1,T2,T3> : IService<T>
{
    public Service(IRepository<T1> r1,IRepository<T2>,IRepository<T3>) { ... }
}

在创建Service类以使用相同的DataContext注入所有三个存储库时,是否有任何方法?

解决方法

您需要做的就是确保在您的Unity容器中注册Datacontext时,请在config中使用PerResolveLifetimeManager:
<type type="<namespace>.DataContext,<assembly>">
    <lifetime type="Microsoft.Practices.Unity.PerResolveLifetimeManager,Microsoft.Practices.Unity" />
</type>

或在代码中:

container.RegisterType<DataContext>(new PerResolveLifetimeManager());

然后,只要容器解析服务,任何依赖于需要DataContext的依赖项都将提供完全相同的依赖项.但是,解决Service的下一个请求将创建一个新的DataContext.

大佬总结

以上是大佬教程为你收集整理的c# – 使用Unity在多个类型中注入相同的DataContext实例全部内容,希望文章能够帮你解决c# – 使用Unity在多个类型中注入相同的DataContext实例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ群:277859234,请注明来意。