使用 Autofac 的 AWS 配置
AWS Configuration with Autofac
我正在使用 Autofac 并想要配置 AmazonSimpleEmailService。
我正在寻找
的等价物
services.AddDefaultAWSOptions(_configuration.GetAWSOptions());
services.AddAWSService<IAmazonSimpleEmailService>();
到目前为止,我尝试了下面的代码,但是我还没有解决参数部分。
builder.Register(c => _configuration.GetAWSOptions()); <<-- I dont think it will work.
builder.RegisterType<AmazonSimpleEmailServiceClient>()
.As<IAmazonSimpleEmailService>()
.WithParameter(new TypedParameter(typeof(AmazonSimpleEmailServiceConfig), ))
是否有简单的声明方法?
根据可以找到的源代码 here,您必须执行以下操作:
作为这一行的替代品
services.AddDefaultAWSOptions(_configuration.GetAWSOptions());
您可以使用 Autofac
:
builder.Register(_ => _configuration.GetAWSOptions())
.As<AwsOptions>() // or just .AsSelf()!
.SingleInstance(); // services.Add(someServiceDescriptor) adds items as singleton by default as well
现在,对于第二部分,您将需要您之前注册的 AWSOptions
。
builder.Register(componentContext =>
{
var options = componentContext.Resolve<AWSOptions>();
var client = options.CreateServiceClient<AmazonSimpleEmailServiceClient>();
return client;
})
.As<IAmazonSimpleEmailService>()
.SingleInstance(); // you could choose a different scope here but there extension also defaults to singleton
没有比这更简单的方法了,这与 they do 有点相似。
我正在使用 Autofac 并想要配置 AmazonSimpleEmailService。 我正在寻找
的等价物services.AddDefaultAWSOptions(_configuration.GetAWSOptions());
services.AddAWSService<IAmazonSimpleEmailService>();
到目前为止,我尝试了下面的代码,但是我还没有解决参数部分。
builder.Register(c => _configuration.GetAWSOptions()); <<-- I dont think it will work.
builder.RegisterType<AmazonSimpleEmailServiceClient>()
.As<IAmazonSimpleEmailService>()
.WithParameter(new TypedParameter(typeof(AmazonSimpleEmailServiceConfig), ))
是否有简单的声明方法?
根据可以找到的源代码 here,您必须执行以下操作:
作为这一行的替代品
services.AddDefaultAWSOptions(_configuration.GetAWSOptions());
您可以使用 Autofac
:
builder.Register(_ => _configuration.GetAWSOptions())
.As<AwsOptions>() // or just .AsSelf()!
.SingleInstance(); // services.Add(someServiceDescriptor) adds items as singleton by default as well
现在,对于第二部分,您将需要您之前注册的 AWSOptions
。
builder.Register(componentContext =>
{
var options = componentContext.Resolve<AWSOptions>();
var client = options.CreateServiceClient<AmazonSimpleEmailServiceClient>();
return client;
})
.As<IAmazonSimpleEmailService>()
.SingleInstance(); // you could choose a different scope here but there extension also defaults to singleton
没有比这更简单的方法了,这与 they do 有点相似。