Методы Autofac Keyed / Named не обеспечивают перегрузку с помощью функции отображения сервисов - PullRequest
0 голосов
/ 04 июня 2019

Метод 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?Или я что-то упустил?

1 Ответ

1 голос
/ 04 июня 2019

Кажется, что 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

...