У меня есть этот класс, где в настоящее время я зарегистрировал их, используя AddScoped из метода сервиса. Но как мне их зарегистрировать, используя автофак? Я пытаюсь привыкнуть к автофаку.
Уже пытался использовать Autofac для регистрации, но при запуске программы он ничего не делает.
Класс
public class WaktuSolatServiceApi : IWaktuSolatServiceApi
{
private readonly string URL = string.Empty;
HttpClient client;
public WaktuSolatServiceApi(HttpClient client, IOptions<WaktuUrl>
settings)
{
this.client = client;
URL = settings.Value.URL;
}
}
public interface IWaktuSolatServiceApi
{
Task<Solat> GetAsyncSet();
}
Autofac
public static class ContainerConfig
{
public static IContainer Configure()
{
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(Assembly.Load(nameof(WaktuSolatApi)))
.Where(c => c.Namespace.Contains("Services"))
.As(t => t.GetInterfaces().FirstOrDefault(i => i.Name == "I" + t.Name)).AsImplementedInterfaces();
//builder.Register(c => new WaktuSolatServiceApi(c.Resolve<HttpClient>(), c.Resolve<IOptions<WaktuUrl>>()));
return builder.Build();
}
}
Запуск:
public Startup(IConfiguration configuration)
{
Configuration = configuration;
var container = ContainerConfig.Configure();
}
В настоящее время я использую это:
public static IServiceCollection AddService(this IServiceCollection
services)
{
services.AddScoped<IWaktuSolatServiceApi, WaktuSolatServiceApi>();
services.AddScoped<HttpClient>();
return services;
}