Как настроить StructureMap для получения нескольких параметров contstructor? - PullRequest
0 голосов
/ 03 августа 2011

У меня есть следующий тип, для которого мне нужно создать экземпляр 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 в.1008 *

Это просто случай:

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

или я должен настроить его по-другому?

Ответы [ 2 ]

6 голосов
/ 14 августа 2011

Вы пробовали код в своем вопросе, он выглядит правильно.

Зарегистрируйте свой тип в 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>();
1 голос
/ 03 августа 2011

Я бы сказал, что вы вводите ссылку типа IConfigurationHelper или что-то, что содержит эти 3 свойства.Таким образом, вы можете просто использовать разные типы, полученные из IConfigurationHelper

...