0

У меня есть конструктор службы с несколькими параметрами одного типа зависимостейSimpleInjector регистрации имени параметра

class Service{ 
    public void Service (String connectionStringOne, string connectionStringTwo) 
    {} 
} 

Как я могу сделать эту регистрацию в SimpleInjector контейнере. Предполагалось, что я буду использовать RegisterConditional, обеспечивающий предикат. , например.

Container.RegisterConditional(typoef(string),"SQLConnectionString",Leftstyle.Singleton, pc => pc.ParameterName == "connectionStringOne") 
Container.RegisterConditional(typoef(string),"MDXConnectionStribng",Leftstyle.Singleton, pc => pc.ParameterName == "connectionStringTwo") 

Однако PredicateContext не обеспечивает 'ParameteName'

+0

Я не понимаю ваш вопрос. Можете ли вы уточнить? – Steven

+0

Извинения, я оговорился. См. Пересмотренный вопрос –

+0

Имя параметра можно получить с помощью 'c.Consumer.Target.Name', хотя я советую использовать RegisterConditional следующим образом. См. Мой ответ для альтернативного подхода. – Steven

ответ

0

Вы должны зарегистрировать услугу, используя заводскую делегат:

container.Register<IService>(() => new Service("str1", "str2")); 
+0

Что делать, если вместо жестко закодированных строк у меня есть переменные сеанса, которые содержат передаваемые значения или web.config? –

+0

@SimpleFellow это два очень разных варианта использования. Значения в файле web.config являются постоянными значениями; они не меняются в течение срока службы приложения. Вы должны прочитать их из конфигурации во время запуска и передать их точно так же, как в данном примере. Повторение значения из сеанса должно быть абстрагировано за абстракцией приложения. Если вы разместите новый вопрос с более подробной информацией о своем деле, я постараюсь ответить на него. – Steven

+0

Просто рассмотрите случай класса, у которого есть конструктор, которому нужна строка. Строка, которая требуется, находится в переменной сеанса, и для каждого пользователя она будет отличаться. (разные сеансы/разные строковые значения/каждый пользователь имеет уникальное значение). Что делать в этом случае? –