확대하려면 Garath's observation 워크 북은 _Workbook과 WorkbookEvents_Event의 조합입니다.
기본적으로 _Workbook 인터페이스는 Excel에서 구현되며 WorkbookEvents_Event 인터페이스는 발생시키는 이벤트입니다.
COM에서 WorkbookEvents_Event는 원본 인터페이스이며 에 대한 메서드 서명을 실제로 정의합니다. 클라이언트을 이벤트 싱크 (일명 이벤트 핸들러)로 등록합니다. 통합 문서 인터페이스는 함께 묶는 실제 코 클래스 (COM 클래스)입니다.이 클래스는 _Workbook 메서드를 제공하며 WorkbookEvents_Event의 원본입니다.
COM에서 _Workbook 인터페이스는 IUnknown :: QueryInterface (Excel과 상호 작용하는 방식) 호출에서 반환되며 WorkbookEvents_Event는 IConnectionPoint :: GetConnectionInterface에서 반환됩니다. 차례로 통합 문서의 "이벤트"(COM 통화의 연결 지점)에 가입하려면 WorkbookEvents_Event 구현을 IConnectionPoint :: Advise에 전달하여 Excel이 이벤트 발생시 호출하도록합니다.
.NET으로 변환되면 이러한 원본 인터페이스는 대부분 의미를 잃어 버리고 구현 세부 사항이됩니다. 강력한 형식의 대리자는 작업을 단순화하고 COM interop은 모든 자동 인터페이스 매직을 자동화합니다.
대부분의 경우 Office interop (Workbook) 용 coclass 인터페이스를 사용하는 것만으로도 .NET 모델에 가장 적합하고 가장 근접합니다. 그러나 NB는 다른 공급 업체가 향후 버전 관리를 위해 생성 된 인터페이스 (통합 문서) 대신 실제 래퍼 (예 : WorkbookClass)의 사용을 권장하는 것을 보았습니다. 솔직하게 말하면, 나는 (고맙게도) 어떤 방향으로가는 파급 효과를 생각할 필요가 전혀 없었다.
아, 밑줄은 주로 규칙과 클래스 이름이 지정된 COM 인터페이스 이름을 생성하는 편리한 방법입니다. VB6에서는 해당 규칙을 사용하는 클래스에 대해 COM 인터페이스를 만듭니다 (예 : Workbook 클래스가있는 경우 COM 인터페이스 _Workbook을 내보냄). 잘못된 VB6 이름이므로 VB6이 해당 규칙을 사용합니다.일반적으로 잘못된 밑줄은 유효하지 않은 식별자 (VB6) 또는 예약 된 (C++)이므로 자동 생성 된 편리한 이름을 나타냅니다.
Jon Skeet의 소식? 그는 심지어 알지도 못합니다 (http://stackoverflow.com/questions/1051464/excel-interop-worksheet-or-worksheet). 닫으려고 투표. – nawfal
그건 말도 안돼. –