[英]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.