簡體   English   中英

如何使用autofac注冊此類?

[英]How to register this class using autofac?

我在當前使用service方法中的AddScoped進行注冊的此類中。 但是如何使用autofac注冊它們? 我正在嘗試使用autofac。

已經嘗試使用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;
 }

Autofac提供了三種識別服務的典型方法。 最常見的是按類型標識。

builder.RegisterType<WaktuSolatServiceApi>().As<IWaktuSolatServiceApi>();

本示例將IWaktuSolatServiceApi類型的服務與WaktuSolatServiceApi組件相關聯。 可以使用服務類型和Resolve()方法來檢索組件的實例:

var r = container.Resolve<IWaktuSolatServiceApi>();

最后,如果不是您的答案,請查看此Autofac文檔以獲取更多信息

您應該配置您的選項。

services.Configure<MyOptions>(Configuration.GetSection("MyOptions"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM