[英]Autofac - Injecting Keyed service with NamedParameter into constructor
我在 Autofac 中注册了一个 Keyed 服务,我想通过构造函数注入它。 该服务已注册
builder.Register((ctx, par) =>
{
var namedParameter = par.Named<string>("myNamedParameter");
... configuration and instantiation ...
}).Keyed<IMyService>(myKey);
并且目前正在明确解决
public class MyConsumer {
private readonly IMyService _myService;
//current
public MyConsumer(ILifetimeScope scope) {
_myService = _scope.ResolveKeyed<IMyService>(myKey, new NamedParameter("myNamedParameter", "parameterValue"));
}
//preferred
public MyConsumer(IMyService myService) {
_myService = myService;
}
}
但是,我一直无法找到在构建过程中注入所述服务的方法。 Autofac 的KeyFilterAttribute
只接受一个键; 它似乎不允许NamedParameters
。 这可能吗?
NamedService
是的专用版本KeyedService
其中关键的类型为String
。
两个都
c.RegisterType<T>().Named<IT>("x");
c.RegisterType<T>().Keyed<IT>("x");
是等价的。
您可以使用
public MyConsumer([KeyFilter("x")]IMyService myService) {
_myService = myService;
}
它将解析名为"x"
的IMyService
类型的IMyService
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.