Универсальный интерфейс службы приложений с несколькими реализациями - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу реализовать общий интерфейс службы на несколько классов. Возможно ли это сделать? Кажется, что он просто выбирает один из классов для внедрения. Скорее всего, я что-то упускаю из-за внедрения зависимостей. Я хотел бы избежать создания отдельного интерфейса для каждого класса, если это возможно.

1 Ответ

0 голосов
/ 05 сентября 2018

Предположим, что у вас есть такой интерфейс:

public interface IMyService<TEntity> { ... }

и у вас есть 2 реализации:

public class MyUserService : IMyService<User> { ... } public class MyRoleService : IMyService<Role> { ... }

Чтобы иметь возможность вводить IMyService<User> или IMyService<Role>, вы должны зарегистрировать их в DI в методе Initialize вашего модуля:

IocManager.Register<IMyService<User>, MyUserService>(DependencyLifeStyle.Transient); IocManager.Register<IMyService<Role>, MyRoleService>(DependencyLifeStyle.Transient);

...