1

내가 여러 프로젝트와 솔루션이 참고
PROJECTA> 참조> 프로젝트 B를
ProjectB> 참조 > 프로젝트 C
ProjectC> 참조 없음
윈도우 폰 7.1 프로젝트

현재 rel ationship 위에서 설명한 ProjectA 어셈블리가 ProjectA에서 누락되었습니다 (지금 당장 정확한 예외를 제공 할 수 없음) 예외가 발생합니다.

안드로이드에서는 가능하지만 WP 플랫폼에서는 가능하다는 것을 알고 계십니까?

편집 :
내가 PROJECTA에 ProjectC의 참조를 추가하면 예외를 해결할 것을 알고 있지만 내 목표는 아니다.

+0

당신은 너무을 위해 프로젝트 참조 프로젝트 C를 추가해야합니다. 프로젝트 B는 프로젝트 C에 의존하기 때문에 –

+0

왜 C에서 A를 참조하지 않았습니까? – Will

+0

내 목표는 ProjectA에서 하나의 참조 만 갖는 것이기 때문에. – EvZ

답변

0

ProjectA가 원본에서 ProjectC의 모든 유형을 참조하지 않는 경우에만 설명하는 설정이 가능합니다. ProjectA가 ProjectC의 모든 유형을 (심지어 간접적으로) 참조하는 경우 참조를 추가해야합니다. 이 문제를 해결할 방법은 없습니다. 왜냐하면 컴파일러가 ProjectA를 빌드하기 때문에 소스 코드의 모든 유형을 해결할 수 있어야하기 때문입니다.

ProjectC :

public class C 
{ 
    public void CTest() { Console.WriteLine("C"); } 
} 

ProjectB :

public class B 
{ 
    public C GetC() { return new C(); } 
} 

PROJECTA :

public class A 
{ 
    static void Main(string[] args) 
    { 
     var b = new B(); 
     // b.GetC(); 
    } 
} 

위의 공동됩니다 예를 들어

, 이제 우리는 다음과 같은 프로젝트가 있다고 가정 해 보자 당신은 홈페이지에서 마지막 행의 주석을 해제하려고하면 mpile,하지만, 당신은 컴파일러 오류가 발생합니다 :이 약

The type ProjectC.C is defined in an assembly that is not referenced. You must add a reference to assembly 'ProjectC, ...'


한 가지 가능한 방법은 동적 유형을 사용하는 것입니다. 동적 타이핑은 런타임까지 유형 분석을 지연시킵니다. 이는 다음 수정이 성공적으로 컴파일되고 실행됨을 의미합니다. (나는이 방법을 권하고 싶지 않다 - 당신은 컴파일 시간 안전 및 인텔리 지원 잃어 버려 - 정말 매력적인 이유가 없다면.)

ProjectC을 :

public class C 
{ 
    public void CTest() { Console.WriteLine("C"); } 
} 

ProjectB을 :

public class B 
{ 
    public dynamic GetC() { return new C(); } 
} 

PROJECTA는 :

public class A 
{ 
    static void Main(string[] args) 
    { 
     var b = new B(); 
     b.GetC().CTest(); 

     Console.ReadLine(); 
    } 
} 
+0

답변 해 주셔서 감사합니다. 나는 너에게 동의한다. 동적 유형을 사용하는 것과는 다른 프로젝트에 동일한 참조를 추가하는 것이 좋습니다. – EvZ