2017-02-01 1 views
0

BusinessServices (CLASS 라이브러리)와 통신하는 MVC 5를 사용하고 있습니다. Unity4 (기본적으로 Unity.Mvc5)를 사용하여 BusinessLayer 객체를 자동으로 생성합니다. Unity를 사용하여 DbContext의 수명을 관리하고 싶지는 않지만 적절한 연결 문자열이 MVC에서 클래스 라이브러리로 전달되도록 connectionString을 BusinessServices 클래스로 보내려고합니다.유니 코드를 사용하여 MVC에서 클래스 라이브러리로 연결 문자열 및 기타 변수를 전달하는 방법

Unity를 사용하여 connectionString 및 기타 필수 변수 (예 : logPath 등)를 내 ClassLibrary에 전달하는 방법을 모르겠습니다. 어떤 제안?

+1

아마도 당신은 [사출 생성자]을 사용할 수 있습니다 (http://stackoverflow.com/를 질문/8614936/i-pass-in-constructor- 인수 - i-register-a-type-unitity)? –

답변

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는 기본 클래스 인 PersonBusinessService : IPersonBusinessService : IPersonBusinessService, BusinessConfigurationOptions와 같은 기본 클래스에서 상속해야합니다. – Johny

+1

@Johny 모든 서비스가 동일한 매개 변수를 사용합니까? 그렇다면 읽기 전용 속성으로 "구성 객체"인스턴스를 등록하고 각 서비스가 해당 생성자에서 수신하도록하십시오. – fsimonazzi

관련 문제