Регистрация типов в цепочке классов - PullRequest
1 голос
/ 09 июля 2019

Допустим, у нас есть следующее дерево наследования:

Base<Generic> : Base : IBase

И есть два вида реализаций:

A) Class1Operation : Base<Generic>
   Class2Operation : Base<Generic>

B) Class3Operation : Base
   Class4Operation : Base

Для точки AI есть что-то вроде этого:

builder.RegisterAssemblyTypes(assembly)
        .Where(t => t.Name.EndsWith("Operation"))
        .AsClosedTypesOf(typeof(Base<>))
        .InstancePerLifetimeScope();

Как я могу зарегистрировать типы для точки B, чтобы все их (A и B) я мог разрешить через интерфейс: IBase?

РЕДАКТИРОВАТЬ

Мне удалосьчтобы сделать это, добавив следующий метод registerAssemblyTypes:

builder.RegisterAssemblyTypes(persistenceAssembly)
        .Where(t => t.Name.EndsWith("Operation"))
        .AssignableTo<Base>()
        .AsImplementedInterfaces()
        .InstancePerLifetimeScope();

и ..., кажется, разрешает ссылки в обоих примерах.

1 Ответ

1 голос
/ 09 июля 2019

Это решило мою проблему:

builder.RegisterAssemblyTypes(persistenceAssembly)
        .Where(t => t.Name.EndsWith("Operation"))
        .AssignableTo<Base>()
        .AsImplementedInterfaces()
        .InstancePerLifetimeScope();
...