As
方法提供了一个带有Func<Type, Type> serviceMapping
参数的重载,但是Keyed
和Named
方法却没有。它们分别仅提供Func<Type, object> serviceKeyMapping
和Func<Type, string> serviceNameMapping
参数。
但是,我想使用所有类型的相同键向RegisterAssemblyTypes
注册一组类型,但使用由类型本身确定的不同接口。我期望找到一种方法重载,例如Keyed(object serviceKey, Func<Type, Type> serviceMapping)
或Keyed(Func<Type, object> serviceKeyMapping, Func<Type, Type> serviceMapping)
。
这是API设计的疏忽吗?还是我错过了什么?
答案 0 :(得分:1)
该API似乎没有这种功能。但是,您可以将As(Func<Type, Service> serviceMapping)
重载与KeyedService
对象一起使用。
例如
builder.RegisterAssemblyTypes(typeof(Parent).Assembly)
.Where(t => t.IsAssignableTo<ICommon>())
.As(t => new KeyedService(keyObject, t.GetType().GetInterfaces()[0]));
KeyedService
在Autofac.Core
命名空间中。没有NamedService
对象,但是您可以将KeyedService
与string