在我使用TypedNamedAndKeyedServices的Autofac的情况下,使用RegisterType()
或RegisterAssemblyTypes()
注册类型(使用反射来查找适当的构造函数)时是否有办法? ,指定其中一个依赖项使用键控/命名服务?理想情况下,我想做这样的事情:
builder.RegisterType<ServiceA>();
...
public class ServiceA
{
public ServiceA([ByName("online")] IDependencyB dependencyB, ...)
{ ... }
}
如果没有,那么如何将其添加到Autofac:
答案 0 :(得分:1)
不像我想的那样可以发现,但是:
builder.RegisterType<ServiceA>()
.WithParameter(
(pi, c) => pi.Name == "dependencyB",
(pi, c) => c.ResolveNamed<IDependencyB>("online"));
我们过去曾考虑过简化,但此方案的变化数量非常大。这种方法涵盖了所有这些方法,主要使用熟悉的API(System.Reflection和'Resolve ...()'。)