[英]How do I Register Autofac Module with Configuration
我有一個控制台應用程序,它引用了 class 庫,它本身引用了 class 庫(瀑布)。 問題是我想通過 Autofac 模塊傳遞 IConfiguration 來注冊我的IConfiguration
,然后讓它們在最底層的庫中訪問,但我不確定如何實現這一點。 (我的設計重點是有一個獨立的 NuGet package 可以被控制台應用程序或網站引用)
關鍵是我想在我的新網站上注冊主要的.dll
( Notification.Send
) 而不必擔心注冊較低的杠桿.dll
( Notification.Queue
) 但仍然可以訪問網站appsettings.json
。 這是我的例子
控制台應用程序
class Program
{
static void Main(string[] args)
{
IConfiguration Configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.AddCommandLine(args)
.Build();
var builder = new ContainerBuilder();
//How to pass "Configuration" to SendNotificationModule?
builder.RegisterModule(new SendNotificationModule());
}
}
通知.發送(圖書館)
public class SendNotificationModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
//How to pass "Configuration" to QueueModule?
builder.RegisterModule(new QueueModule());
}
}
Notifications.Queue(庫)
public class QueueModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
//Here I want to register a custom interface which I can use to retrieve config from
//and then use for DI in my Notifications.Queue dll
}
}
我對 Autofac 不太熟悉,也許找錯了樹,但我到處搜索,但無法弄清楚。
你為什么不通過模塊構造函數傳遞它?
class Program
{
static void Main(string[] args)
{
var configuration = // ..
builder.RegisterModule(new SendNotificationModule(configuration));
}
}
通知.發送(圖書館)
public class SendNotificationModule : Module
{
private readonly IConfiguration configuration;
public SendNotificationModule(IConfiguration configuration)
{
this.configuration = configuration;
}
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.RegisterModule(new QueueModule(configuration));
}
}
Notifications.Queue(庫)
public class QueueModule : Module
{
private readonly IConfiguration configuration;
public QueueModule (IConfiguration configuration)
{
this.configuration = configuration;
}
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
//Here I want to register a custom interface which I can use to retrieve config from
//and then use for DI in my Notifications.Queue dll
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.