2

나는 using Autofac to completely decouple an application에 대한 정말 멋진 블로그를 읽었습니다. 그러나 내가 할 수있는 것처럼 시도해 보라. (그리고이 모든 것에 끔찍하게 익숙하지 않다.) 나는 Autofac을 젤로 만들 수 없었다.Unity 구성시 별도의 프로젝트 참조?

MS Patterns & Practices Enterprise Library에서 Unity로 바뀌 었습니다.

  • UnityDi (콘솔 응용 프로그램)
  • UnityDi.Contracts (인터페이스)
  • UntiyDi.Domain (클래스)
  • : 자신을 위해 불필요하게 어려운 일을하려면, 나는 같은 프로젝트에 모든 내 물건을 분리 UnityDi.Repositories (데이터 액세스)
  • UnityDi.Services

나는 조랑말 XML 구성을 사용 (액세스 서비스 계층을 통해 저장소에) 유니티까지 : 실행중인 응용 프로그램, 걱정에

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
     <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> 
    </configSections> 
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
     <assembly name="UnityDi.Contracts" /> 
     <assembly name="UnityDi.Domain" /> 
     <assembly name="UnityDi.Services" /> 
     <assembly name="UnityDi.Repositories" /> 
     <namespace name="UnityDi.Contracts" /> 
     <namespace name="UnityDi.Domain" /> 
     <namespace name="UnityDi.Services" /> 
     <namespace name="UnityDi.Repositories" /> 
     <container> 
      <register type="IUser" mapTo="User"></register> 
      <register type="IUserService" mapTo="UserService"></register> 
      <register type="IUserRepository" mapTo="UserRepository"></register> 
     </container> 
    </unity> 
</configuration> 

그리고있어 :

private static readonly IUnityContainer Container = new UnityContainer(); 
... 
Container.LoadConfiguration(); 

하지만 그렇게하기 위해서는

, 내 콘솔 응용 프로그램에서 위의 모든 프로젝트에 대한 참조가 필요합니다.

앱에 UnityDi에 대한 참조 만있을 수있는 방법이 있습니까? 계약 (인터페이스)? 그런 다음 앱은 잘 분리되어 있습니다 (슬그머니 해머와 함께).

나는 충분히 설명 할 만하다. 나는 이것에 완전히 익숙하지 않다. 나는 더 나은 학습을 용이하게하기 위해 이렇게 극단적이다.

+0

XML 구성을 사용할 때 모든 프로젝트에 대한 참조가 필요하지 않습니까? 너는 왜 그렇게 생각하니? –

+0

그리고 다른 모든 프로젝트를 참조하는 프로젝트가 있더라도 문제는 무엇입니까? 그것이 부트 스트랩퍼의 의미입니다. 이 [link] (http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx)를 확인하십시오 –

+0

VS2010에서 레이어 다이어그램을 만들었습니다. 실제로 계약서에만 의존하는 다양한 레이어를 가지고 있다는 것을 보여주었습니다. 나에게 내 주요 프로젝트는 Unity의 다른 모든 프로젝트를 참조하여 구성을 가져올 때 찾아야한다고 말하지만 Unity가 어떻게 든 후크를 필요로한다고 가정합니다. – Richard

답변

1

프로젝트 참조가 필요한 이유가 의심 스럽다면 VS가 없으면 VS는 F5를 누르면 어셈블리가 응용 프로그램 bin 폴더로 복사되지 않습니다. 어떻게 그럴 것이고, 당신이 그들을 필요로하는지 알 수있는 방법이 없습니다!

프로젝트 참조는 문제에 대한 가장 빠른 해결책입니다. 당신이 할 수있는 또 다른 일은 앱을 실행할 수 있도록 올바른 DLL에 복사 할 포스트 빌드 단계를 추가하는 것입니다.

+0

Spot on, 감사합니다. – Richard