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.