微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Autofac-重用组件中的注入服务以满足其他组件

如何解决Autofac-重用组件中的注入服务以满足其他组件

| 使用Autofac,假设我有一个PersonRepository和EventRepository类,它们都依赖于IDataService服务...我在Mvc Controller操作中使用了两个存储库类(例如-可能也是一些MvvM WPF应用程序),例如
public class Mycontroller : controller
{
   public Mycontroller(PersonRepository personRepo,EventRepository eventRepo) {...}
   ...
   public ActionResult Index(){ ... I use the repository classes in here ...}
}
public class PersonRepository
{
   public PersonRepository(IDataService service){...}
}
public class EventRepository
{
   public PersonRepository(IDataService service){...}
}
我想确保在使用存储库类并将其注入IDataService实现时,两个存储库类都接收到相同的IDataService服务实例。 我怎样才能做到这一点?     

解决方法

这取决于IDataService的生存期。 您是否要一遍又一遍地重复使用同一张纸?然后,它基本上是一个单例,并且必须配置Autofac将其视为一个:
builder.RegisterType<IDataService>().As<MyDataService>().SingleInstance();
但是,如果您正在MVC中运行,并且只想在HTTP请求的生存期内重用同一实例,则可以像下面这样配置Autofac:
builder.RegisterType<IDataService>().As<MyDataService>().HttpRequestScoped();
    ,注册组件时调用“ 3”方法。 (假设流利的注册)     ,尝试使用重用规则实施IComponentLifetime,并使用生命周期注册服务。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。