C #으로 ArcGIS 사용자 정의 기능을 구현 하시겠습니까?


11

.NET에서 사용자 정의 기능 을 구현할 수 있습니까?

그렇다면 어떻게?

문제가 .NET으로 COM 집계 를 수행 할 수 있다고 생각 하지만 그중 아무것도 찾을 수 없습니다 ...

누구나 만들 수 있는지 알고 있습니까? 실행 시간 COM_INTERFACE_ENTRY_AGGREGATE_BLIND를 지원하는 .NET 클래스의 COM 호출 가능 래퍼?


관리되는 (.NET) 공동 클래스를 관리되지 않는 프레임 워크 (ArcObjects)에 게시 할 예정이므로 RCW (런타임 호출 가능 래퍼)가 아닌 CCW (COM-callable wrapper)를 작성하지 않습니까?
stakx

COM 집계 구현이 실제로 가능한 .NET 4의 새로운 기능을 반영하도록 답변을 업데이트했습니다.
Petr Krebs

또한 이에 대한 증거가 없지만 Managed C ++은 COM을 다룰 때 더 많은 자유를 부여합니다. C #으로이 작업을 수행하는 좋은 방법을 찾지 못한 경우 중요한 코드에 대해서는 Managed C ++를 살펴볼 수 있습니다.
stakx

답변:


4

.NET 3.5 이하에서는 순수한 COM 집계를 구현할 수 없지만 .NET 4에서는 운이 좋을 수 있습니다. .NET 4에서는 새로운 ICustomQueryInterface 인터페이스 가 추가 되어 인터페이스 쿼리를 올바르게 리디렉션 할 수 있습니다. 샘플이 포함 된 자세한 정보는 codeplex 에서 찾을 수 있습니다 .

또한 C ++ ESRI docs 샘플을 따라 진행하는 것이 좋습니다 . 링크는 9.0이지만이 특정 샘플이 1 비트로 변경되지 않은 것 같습니다.


이 문제는 많은 관심을 끌기 때문에 ESRI 샘플을 .NET 4 C #으로 이식하려고합니다.
Petr Krebs

Petr, 샘플의 C # 버전을 갖는 것이 좋습니다! ArcGIS 10.0 PIA가 3.5 인 경우에도 사용자 지정 기능은 여전히 ​​4.0 (?) 일 수 있습니다. 며칠 안에이 질문에 현상금을 추가 할 것입니다.
Kirk Kuykendall

@Petr 그 샘플은 어떻게 되나요;)
blah238

@ blah238 : 겉으로는 쉽지 않은 것으로 나타났습니다 ..;) .NET COM 집계에 대한 문서 나 샘플이 많지 않습니다. 다시 돌아오겠습니다.
Petr Krebs

@ Kirk : BTW-.NET 4를 사용하여 확장을 시도 할 때 정말 이상한 문제가 발생 했으므로 권장하지 않습니다. 적어도 10sp1에서 제대로 작동하려면 많은 코드를 3.5sp1로 백 포트해야했습니다. (하나의 예-특정 문서 이벤트를 구독하고 다른 작업을 수행하지 않으면 ArcMap에서 마우스 오른쪽 버튼 메뉴가 비활성화됩니다. 완전히 관련이없는 기능이지만 ...)
Reed Copsey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.