Office Interop API에 인터페이스/클래스(IFoo, FooClass) 패턴이 있는 이유는 무엇인가요?
-
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에서 구현됩니다.
그것이 COM의 작동 방식이기 때문입니다.
com 구성 요소가 구현 한 인터페이스를 정의합니다. COM의 거의 모든 것이 인터페이스를 기반으로합니다. 인터페이스는이를 구현하는 클래스보다 더 중요합니다.
이는 COM 작동 방식을 기반으로 합니다.
좋은 .Net 디자인의 예를 찾고 있다면 다음을 수행하십시오. 아니다 PIA(Office interop 라이브러리)를 살펴보세요.이는 COM에 상응하는 직접적인 래퍼이며 C#에서 작업하기에는 다소 끔찍합니다.
Office 라이브러리를 더 쉽게 사용하려면 다음을 시도해 보세요. VSTO 전동 공구