c# - 如何将参数传递给 .NET 5 中的作用域服务?
问题描述
我有一些 .Net 代码需要迁移到 .NET 5。具体来说,我正在注册一些服务。我已经迁移了大部分服务,除了那些需要传递参数的服务。我的旧代码如下所示:
private void RegisterItem<T>(ContainerBuilder builder) where T : Item
{
builder
.RegisterType<StoreItem<T>>()
.As<IItem<T>>()
.WithParameter(ResolvedParameter.ForNamed<IStore>(nameof(MyContext)))
.InstancePerLifetimeScope()
;
}
我试图修改上面的代码以使用:
services.AddScoped<IItem<T>, StoreItem<T>>();
但是,这不会传入在原始实现中设置的参数。我的问题是,如何将参数传递给 ASP.NET Core 中的范围服务?
解决方案
只需将它们作为参数添加到您的构造函数中,它们将由依赖注入引擎解析:
public StoreItem(IStore store)
{
...
}
请注意,IStore
还必须注册:
services.AddScoped<IStore, MyStore>();
推荐阅读
- html - 当 parent 设置为 display:none 时强制 html 元素可见
- python - Keras FlowFromDirectory 中的 Shuffle 参数似乎不起作用
- http - 这个表达式中的圆括号是什么意思?(&net.Dialer{Timeout: 5 * time.Second}).DialContext
- php - 如何使用表单将数据插入到使用 PHP 的数据库中
- azure - 即用即付卡到期后 Azure Web App 不可用
- azure-devops - scp-主机密钥验证失败-AzureDevOps
- c++ - 如何解决这个超级难的创星难题?
- node.js - 使用本机 HTTPS 请求修补 Node.js 中的数据
- javascript - 调试控制台中的错误:“不要在突变处理程序之外改变 vuex 存储状态”
- jmeter - 测试完成后的 JMeter 异常