Автоактивная синглтонная инициализация

У меня есть интерфейс и класс, как это:

public sealed class UserService : IUserService
{
    private readonly ILifetimeScope container;
    public UserService()
    {
        this.container = this.ConfigureBuilder(new ContainerBuilder()).Build();
    }

    private ContainerBuilder ConfigureBuilder(ContainerBuilder builder)
    {
        builder.RegisterType<UserConfiguration>()
            .AsImplementedInterfaces();
        builder.Register(c => this.GetCredentialHelperAsync(c))
            .As<ICredentialProvider>()
            .SingleInstance();
        return builder;
    }

    private async Task<CredentialProvider> GetCredentialHelperAsync(IComponentContext componentContext)
    {
       //This seems to causing problem as I think I cannot access component when I am build. 
        var config = componentContext.Resolve<UserConfiguration>();
        if (config.User == null)
        {
            //ADD the user and set credentials
        }
        var userCredentials = new List<IUserCredential>();
        return new UserCredentialProvider(userCredentials)
    }
}

Когда я использую autofac и хочу зарегистрировать этот класс как синглтон, как мне это сделать. Проблема в том, что значение учетных данных пользователя определяется после чтения учетных данных из файла во время выполнения.

С помощью приведенного выше кода я получаю исключение при сборке UserCredentialProvider, так как я думаю, что мы не можем получить доступ к объектам во время сборки. Есть ли выход?

0 ответов

Другие вопросы по тегам