使用 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 有点相似。