Unity / ObjectBuilder에서 유형을 해결하기 위해 기본 어셈블리를 추가하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/222102

문제

MS Unity IOC 프레임 워크를 사용하여 첫 번째 프로젝트를 진행하고 있습니다.

Unity 구성에 이것을 가지고 있다면 :

  <container name="TestBusiness">
    <types>
      <type type="PFServer.DataAccess.TestDataAccess" />

그런 다음 오류가 발생합니다.

'pfserver.dataaccess.testDataAccess'에서 'microsoft.practices.unity.configuration, version = 1.1.0.0, culture = neutral, publickeytoken = 31BF3856AD364E35'에서로드 할 수 없습니다.

그러나 유형 정의에 어셈블리 이름을 추가하면 다음과 같습니다.

  <container name="TestBusiness">
    <types>
      <type type="PFServer.DataAccess.TestDataAccess, PFServer" />

그런 다음 잘 작동합니다. 로드 유형에 기본 어셈블리 세트를 추가 할 수있는 방법이 있습니까? 이 경우 이상한 점은 "pfserver.dll"은 어쨌든이 모든 구성을 포함하는 어셈블리라는 것입니다. 현재 어셈블리가 개체를 해결하기위한 길에 있지 않다는 것이 이상하다고 생각합니다 ... 아니면 그냥 뭔가 잘못하고 있습니까?

도움이 되었습니까?

해결책

Unity는 정적 메소드 유형을 호출하여 객체를 입력하기 위해 문자열을 해결합니다. AssemblyQualifiedName. GetType에 대한 호출은 Microsoft.practices.unity.unity.configuration 어셈블리에서 PFSERVER 어셈블리에 대해 알지 못하므로 문자열에 어셈블리 이름이 필요합니다.

유형 별명이 도움이 될 수 있다고 생각합니다. 여기 예입니다.

<unity>
    <typeAliases>
        <typeAlias alias="TestDataAccess" type="PFServer.DataAccess.TestDataAccess, PFServer" />
        ...
    </typeAliases>

    <containers>
      <container name="TestBusiness">
        <types>
            <type type="TestDataAccess" />
            ...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top