2017-02-01 6 views
0

Я использую MVC 5, который ведет переговоры с BusinessServices (библиотека CLASS). Я использую Unity4 (в основном Unity.Mvc5) для автоматического создания объектов BusinessLayer. Я не хочу использовать Unity для управления временем жизни DbContext, но хочу отправить connectionString в класс BusinessServices, чтобы строка соответствия была передана из MVC в библиотеку классов.Как передать строку соединения и другие переменные из MVC в библиотеку классов с помощью Unity

Я не знаю, как передать connectionString и другие необходимые переменные (например, logPath и т. Д.) В мою ClassLibrary с помощью Unity. Какие-либо предложения?

+1

Может быть, вы могли бы использовать [инъекцию конструктору] (http://stackoverflow.com/ вопросы/8614936/как-может-я миновать-в-конструктор-аргументов-при-я-регистр-а-типа-в-единицы)? –

ответ

0

Существует много возможностей для достижения этой цели. Вы можете просто использовать конструктор инъекции, как это:

class Service 
{ 
    Service(string connectionString, string logPath) 
    { 
    } 
} 

myContainer.RegisterType<Service>(
     new InjectionConstructor("Data Source=ServerName;..", "/logs")); 

Или зарегистрировать экземпляр сервиса:

myContainer.RegisterInstance<Service>(
     new Service("Data Source=ServerName;..", "/logs")); 
+0

, но я не хочу включать параметры для каждого BusinessService. Есть ли способ включить этот базовый класс, например BusinessServiceConfigurationOptions, но тогда как это могло бы работать с Unity и каждый мой BusinessService должен наследовать от этого базового класса: например: public class PersonBusinessService: IPersonBusinessService, BusinessConfigurationOptions. – Johny

+1

@Johny делать все услуги получить те же параметры? Если это так, зарегистрируйте экземпляр «объект конфигурации» с свойствами только для чтения и каждый сервис получит его в своем конструкторе. – fsimonazzi