2011-12-09 4 views
0

나는 다음과 같은 상속 구조가 있습니다상위/하위 인터페이스와 방법을 이동

interface A 
{ 
    void Foo(); 
} 
interface B : A 
{ 
} 

을 그리고 Foo()이 실제로 구현되는 유일한 장소 (즉, 비어 있지)을 구현하는 클래스에 실현 B.

내가 A에서 B로 Foo를 이동하면, 나는 그 구현을 사용하여 무엇을 모든 어셈블리에 대한 더 중요한 것은 모든 구현하는 클래스 등을, 다시 컴파일해야 할 것인가?

는 (난 그냥 자신이 시도하고 볼 수 있습니다 알고 있지만, 나 또한 무슨 일이 일어나고 있는지에 대한 몇 가지 '통찰력'싶습니다) 솔루션의 모든 파일/클래스에 대한

+0

업데이트 : 일부 테스트 프로젝트에서 시도되었습니다. B를 구현하는 클래스의 인스턴스에서 직접'Foo '를 호출하면 다시 컴파일 할 필요가 없지만 인터페이스를 통해 호출하면 다시 컴파일해야합니다. 부끄러운 ... – Benjol

답변

1

인터페이스 정의가 이전 버전과 호환되지 않는 방식으로 변경되므로 다른 어셈블리도 다시 컴파일해야합니다. 일부 코드는 A 개체에 Foo을 호출하므로 해당 코드 부분도 다시 작성해야합니다.

1

을 : 예. A 클래스가 실제로 .dll 라이브러리에 있으면 예와 마찬가지로 라이브러리를 다시 컴파일하고 참조를 업데이트해야합니다. 그러나 이것이 왜 큰일인지는 알지 못합니다. C#은 매우 빠르게 컴파일되며 컴파일에 대해 영리합니다. (그런데, 프로그램을 실행할 때마다 빌드되지 않습니까?)

+0

> "그건 그렇고, 당신이 프로그램을 실행할 때마다, 어쨌든 구축하지 않습니까?" - 응, 안돼! – tomfanning

+0

죄송합니다 - "프로그램을 만들 때마다 컴파일되지 않습니까?" –

0

이것은 단순히 버전 문제입니다. 현재 인터페이스는 '오래됨'이며 새로운 '개선 된'인터페이스가이를 대체해야합니다.

이 과정은 많이 사용되는 방식에 따라 다릅니다.

관련 문제