如何解决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 举报,一经查实,本站将立刻删除。