ใช้คุณสมบัติที่กำหนดเองของ ArcGIS ด้วย C # หรือไม่


11

มันเป็นไปได้ที่จะใช้คุณสมบัติที่กำหนดเองใน. NET?

ถ้าเป็นเช่นนั้นได้อย่างไร

ฉันสงสัยว่าปัญหาจะสามารถรวม COMกับ. NET ได้ แต่ฉันไม่พบสิ่งใดบน ...

ไม่มีใครรู้ว่ามันเป็นไปได้ที่จะสร้าง รันไทม์ wrapper callable COM สำหรับคลาส. NET ที่รองรับ COM_INTERFACE_ENTRY_AGGREGATE_BLIND


คุณจะไม่สร้าง wrapper COM-callable (CCW) แทนที่จะเป็น wrapper แบบรันไทม์ (RCW) เนื่องจากคุณจะเผยแพร่ Co-class ที่มีการจัดการ (.NET) ไปยังกรอบงานที่ไม่มีการจัดการ (ArcObjects) หรือไม่?
stakx

ฉันอัปเดตคำตอบของฉันเพื่อสะท้อนถึงคุณสมบัติใหม่ใน. NET 4 ที่สามารถใช้ COM aggregation ได้จริง
Petr Krebs

นอกจากนี้ในขณะที่ฉันไม่มีข้อพิสูจน์ใด ๆ สำหรับเรื่องนี้ดูเหมือนว่า Managed C ++ จะมอบอิสรภาพให้คุณมากขึ้นเมื่อจัดการกับ COM ในกรณีที่คุณไม่พบวิธีที่ดีในการทำเช่นนี้กับ C # คุณสามารถดู Managed C ++ สำหรับรหัสชิ้นสำคัญ
stakx

คำตอบ:


4

คุณจะไม่สามารถใช้การรวม COM ล้วน ๆ ใน. NET 3.5 หรือต่ำกว่า แต่คุณอาจโชคดีใน. NET 4 ซึ่งเพิ่มอินเทอร์เฟซICustomQueryInterfaceใหม่ซึ่งช่วยให้คุณสามารถเปลี่ยนการสืบค้นอินเทอร์เฟซได้อย่างถูกต้อง ข้อมูลเพิ่มเติมกับตัวอย่างรวมสามารถพบได้ในCodePlex

ผมขอแนะนำเพื่อดำเนินการต่อไปตามเอกสาร C ++ ESRI ตัวอย่าง ลิงค์นี้ใช้สำหรับ 9.0 แต่ฉันสงสัยว่าตัวอย่างนี้ไม่มีการเปลี่ยนแปลงแม้แต่นิดเดียว


เนื่องจากปัญหานี้ทำให้ฉันสนใจมากฉันจะพยายามพอร์ตตัวอย่างของ ESRI ไปยัง. NET 4 C #
Petr Krebs

เฮ้เปตร์นี่เป็นตัวอย่างที่ยอดเยี่ยมสำหรับตัวอย่าง C #! แม้ว่า ArcGIS 10.0 PIA นั้นมีขนาด 3.5 แต่ฉันคิดว่าคุณสมบัติที่กำหนดเองยังคงเป็น 4.0 (?) ฉันจะเพิ่มความโปรดปรานให้กับคำถามนี้ในอีกสองสามวัน
Kirk Kuykendall

@Petr ตัวอย่างนั้นเป็นอย่างไร;)
blah238

@ blah238: กลายเป็นว่ามันไม่ง่ายอย่างที่ดูเหมือนว่า .. ;) มีเอกสารหรือตัวอย่างไม่มากเท่ากับการรวม. NET COM ฉันจะพยายามกลับไปหามัน
Petr Krebs

@ Kirk: BTW - เราพบกับปัญหาที่แปลกจริง ๆ บางอย่างเมื่อพยายามทำการขยายโดยใช้. NET 4 - ดังนั้นฉันจะไม่แนะนำ ฉันสิ้นสุดต้อง backport รหัสของเราจำนวน 3.5sp1 เพื่อให้สิ่งต่าง ๆ ทำงานอย่างถูกต้องอย่างน้อย 10sp1 (ตัวอย่างหนึ่ง - การสมัครสมาชิกกิจกรรมเอกสารบางอย่างและไม่ทำอะไรเลยจะปิดใช้งานเมนูคลิกขวาใน ArcMap - แม้ว่าจะเป็นฟังก์ชั่นการทำงานที่ไม่เกี่ยวข้องทั้งหมด ... )
Reed Copsey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.