使用Autofac考虑以下代码:
Builder.RegisterType<SecurityCache>().As<ISecurityCache>()
.WithParameter("id", AppId).SingleInstance()
SecurityCache
具有3个参数,其中两个由DI容器处理,然后使用WithParameter
指定“ id”参数。如何使用.NET Core DI而不是使用Autofac做到这一点?
我想做
services.AddSingleton<ISecurityCache, SecurityCache>();
但是我不确定如何指定id
参数。
答案 0 :(得分:5)
添加服务时,可以使用实现工厂委托。
services.AddSingleton<ISecurityCache>(sp =>
new SecurityCache(AppId, sp.GetService<IService1>(), sp.GetService<IService2>())
);
委托可以访问服务提供商,因此您可以解决其他依赖关系。