Задать вопрос
@MagDarkElf

Как регистрировать в контейнере IService в реализации которого конструктор требует другие сервисы?

В контейнере регистрируется сервис/реализация
var container = new SimpleInjector.Container();
_iocContainer = container;

AssemblyBootstrap.Init(container);

....

container.Register<IDbService, DbService>();
container.Register<IAdmService, AdmService>();
container.RegisterSingle<Services.Caching.IEntityCacheService, Services.Caching.EntityCacheService>();
container.Register<IAuthenticationImpl, AuthenticationImpl>();
container.RegisterAll<IAppInitializer>(typeof(AuthenticationImpl));


конструктор реализации выглядит следующим образом
public AuthenticationImpl(IDbService dbService, IEntityCacheService entityCache)
{
    this.dbService = dbService;
    this.entityCache = entityCache;
}


не пойму как добавить в конструктор ещё один сервис что-бы контейнер это понимал
сделал бы по аналогии, но найти в коде указание того что AuthenticationImpl нужны сервисамы IDbService и IEntityCacheService не смог
  • Вопрос задан
  • 73 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
Контейнер сам всё разрулит, он для этого сделан

UPD:
Проверочный код
class Program
{
    static void Main()
    {
        var container = new SimpleInjector.Container();

        container.Register<IDbService, DbService>();
        container.RegisterSingleton<IEntityCacheService, EntityCacheService>();
        container.Register<IAuthenticationImpl, AuthenticationImpl>();

        container.Verify();

        var instance = container.GetInstance<IAuthenticationImpl>();
        Console.WriteLine(instance.GetType());
    }
}


internal class AuthenticationImpl : IAuthenticationImpl
{
    private IDbService dbService;
    private IEntityCacheService entityCache;

    public AuthenticationImpl(IDbService dbService, IEntityCacheService entityCache)
    {
        this.dbService = dbService;
        this.entityCache = entityCache;
    }
}

internal interface IAuthenticationImpl{}
internal class EntityCacheService : IEntityCacheService{}
internal interface IEntityCacheService{}
internal class DbService : IDbService{}
internal interface IDbService{}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы