2011-07-26 2 views
4

MEF를 사용하여 하나의 플러그인 기반 애플리케이션을 만들었습니다. 그래서 플러그인으로 구현 될 하나의 인터페이스 라이브러리를 만들었습니다.Plugin 역 호환성

하지만 이전 버전과의 호환성에 대한 질문이 하나, 다음 IPlugin을 변경 한 경우 지금, PluginInterface 라이브러리에 인터페이스를 정의한대로

, 난 플러그인 이전 버전 (이 나이가 인터페이스를 구현)로드 할 수 없습니다.

그럼 어떻게 응용 프로그램에서 이전 버전과의 호환성을 얻을 수 있습니까?

나에게주십시오 제안,

덕분에 당신이 인터페이스를 변경할 수 없습니다 이전 버전하게 호환 유지하기 위해

답변

1

. 인터페이스를 변경하려면 다른 새로운 인터페이스 (예 : IPlugin2)를 도입해야합니다.

+0

확장 인터페이스가있는 도메인 라이브러리의 릴리스를 다시 컴파일해도이 사실이 유지되지 않습니까? IOW, 내 '도메인'을 실제 호스트 응용 프로그램에 대한 별도의 솔루션으로 유지해서는 안됩니까? 이렇게하면 도메인을 다시 컴파일하지 않고도 호스트를 변경하여 여러 개의 확장을 없앨 수 있습니까? – IAbstract

+0

@IAbstract 당신이 묻는 것이 무엇인지는 모르지만 어셈블리를 다시 컴파일한다고해서 반드시 ABI가 중단되는 것은 아닙니다. 또한 어셈블리에 새로운 기능을 추가하는 동안 ABI/API를 손상시키지 않기 위해 사용할 수있는 기술조차 있습니다. 이 답변에 설명 된대로 이름이 버전이 지정된 새 인터페이스를 소개하는 것도 한 가지 방법입니다. 또 다른 것은 'XmlReaderSettings'와 같은 클래스를 통해 매개 변수를받는 것입니다.이 클래스에는 이전 버전에 대해 컴파일 된 코드를 중단하지 않고 더 많은 속성을 추가 할 수 있습니다. – binki