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,并使用生命周期注册服务。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...