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();
}
}
당신은 너무을 위해 프로젝트 참조 프로젝트 C를 추가해야합니다. 프로젝트 B는 프로젝트 C에 의존하기 때문에 –
왜 C에서 A를 참조하지 않았습니까? – Will
내 목표는 ProjectA에서 하나의 참조 만 갖는 것이기 때문에. – EvZ