Office Interop API에 인터페이스/클래스(IFoo, FooClass) 패턴이 있는 이유는 무엇인가요?

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

  •  06-07-2019
  •  | 
  •  

문제

Microsoft.Office.Interop.Visio 라이브러리에서 각 엔터티(예: Shape)는 클래스(ShapeClass) 및 인터페이스인 Shape로 설명됩니다.

따라서 각 요소에 대해 다음을 수행합니다.

interface Shape { ... }
class ShapeClass : Shape { ... }

interface Page { ... }
class PageClass : Page { ... }

...

왜 이렇게 설계되었나요?

도움이 되었습니까?

해결책

네임 스페이스의 "Interop"부분은 이것이 실제로 COM 기반 API임을 암시합니다.

COM은 개발자를위한 언어 중립 구성 요소 모델에서 Microsoft의 첫 번째 시도였으며 핵심 신조 중 하나는 인터페이스 기반 디자인이었습니다.

그래서 당신의 예에서 ShapeClass "공동 클래스"라고하며 Shape 상호 작용.

공동 클래스는 전 세계적으로 (Win32 레지스트리에) 등록되었으며 친근한 이름 ( "Prog-ID") 또는 "ClsID"라는 안내서를 기반으로 만들 수 있습니다.

다른 팁

COM 객체로 구현되었고 인터페이스가 클래스 구현 계약을 정의하기 위해 인터페이스가 있기 때문이라고 생각합니다. 인터페이스는 IDL에서 구현됩니다.

Wiki com

그것이 COM의 작동 방식이기 때문입니다.

com 구성 요소가 구현 한 인터페이스를 정의합니다. COM의 거의 모든 것이 인터페이스를 기반으로합니다. 인터페이스는이를 구현하는 클래스보다 더 중요합니다.

이는 COM 작동 방식을 기반으로 합니다.

좋은 .Net 디자인의 예를 찾고 있다면 다음을 수행하십시오. 아니다 PIA(Office interop 라이브러리)를 살펴보세요.이는 COM에 상응하는 직접적인 래퍼이며 C#에서 작업하기에는 다소 끔찍합니다.

Office 라이브러리를 더 쉽게 사용하려면 다음을 시도해 보세요. VSTO 전동 공구

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top