如何配置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注册你的类型并设置字符串构造函数参数
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