如何配置StructureMap以接受多个构造函数参数

本文关键字:参数 构造函数 StructureMap 何配置 配置 | 更新日期: 2023-09-27 18:04:16

我有以下类型,我需要通过StructureMap实例化:

public class AWebService : IAWebService
{
    private readonly string _applicationId;
    private readonly string _username;
    private readonly string _password;
    public AWebService(string applicationId, string username, string password)
    {
        _applicationId = applicationId;
        _username = username;
        _password = password;
    }
}

问题是这个构造函数接受3个参数。我已经看到了如何为StructureMap提供一个参数的例子(例如,在使用StructureMap时传递构造函数参数),但我不确定我需要做什么来传递3。

是否仅仅是:

For<IAWebService>().Use<AWebService>()
  .Ctor<string>("applicationId").Is(GetIDFromConfig())
  .Ctor<string>("username").Is(GetUsernameFromConfig())
  .Ctor<string>("password").Is(GetPasswordFromConfig());

还是我必须以不同的方式配置它?

如何配置StructureMap以接受多个构造函数参数

你试过问题中的代码了吗,它看起来是正确的。

用structuremap注册你的类型并设置字符串构造函数参数

var container = new Container(x => {
            x.For<IAWebService>().Use<AWebService>()
                .Ctor<string>("applicationId").Is("my app id")
                .Ctor<string>("username").Is("my username")
                .Ctor<string>("password").Is("my passowrd");
        });

然后您可以使用设置好的参数获得您的服务。

var service = container.GetInstance<IAWebService>();

我会说你注入一个类型为IConfigurationHelper的引用或其他拥有这3个属性的东西。这样你就可以使用不同的类型都来自于IConfigurationHelper