Terapkan Fitur Kustom ArcGIS dengan C #?

11

Apakah mungkin untuk mengimplementasikan fitur kustom di .NET?

Jika ya, bagaimana caranya?

Saya menduga masalah ini dapat melakukan agregasi COM dengan .NET, tapi saya tidak dapat menemukan apa pun tentang itu ...

Adakah yang tahu apakah mungkin untuk membuat runtime Pembungkus callable COM untuk kelas .NET yang mendukung COM_INTERFACE_ENTRY_AGGREGATE_BLIND?

Kirk Kuykendall
sumber
Bukankah Anda akan membuat pembungkus COM-callable (CCW) daripada pembungkus runtime-callable (RCW), karena Anda akan menerbitkan kelas-terkelola (.NET) ke kerangka kerja yang tidak dikelola (ArcObjects)?
stakx
Saya memperbarui jawaban saya untuk mencerminkan fitur baru di .NET 4 di mana menerapkan agregasi COM sebenarnya mungkin.
Petr Krebs
Juga, sementara saya tidak punya bukti untuk ini, sepertinya Managed C ++ memberi Anda lebih banyak kebebasan ketika berhadapan dengan COM. Jika Anda tidak menemukan cara yang baik untuk melakukan ini dengan C #, Anda bisa melihat Managed C ++ untuk potongan kode penting.
stakx

Jawaban:

4

Anda tidak akan dapat mengimplementasikan agregasi COM murni dalam. NET 3.5 atau lebih rendah, tetapi Anda mungkin beruntung dalam. NET 4, yang menambahkan antarmuka ICustomQueryInterface baru , yang memungkinkan Anda untuk mengarahkan kueri antarmuka dengan benar. Informasi lebih lanjut dengan sampel termasuk dapat ditemukan pada codeplex .

Saya juga merekomendasikan untuk melanjutkan sampel dokumen C ++ ESRI . Tautan untuk 9.0, tetapi saya menduga sampel khusus ini tidak berubah sedikit pun.

Petr Krebs
sumber
Karena masalah ini sangat menarik minat saya, saya akan mencoba untuk mengirim sampel ESRI ke .NET 4 C #.
Petr Krebs
Hai Petr, akan lebih bagus jika memiliki sampel versi C #! Meskipun ArcGIS 10.0 PIA adalah untuk 3.5, saya kira fitur khusus masih bisa 4,0 (?) Saya akan menambahkan hadiah untuk pertanyaan ini dalam beberapa hari.
Kirk Kuykendall
@Petr, bagaimana sampel itu datang;)
blah238
@ blah238: ternyata tidak semudah kelihatannya ..;) Tidak ada banyak dokumentasi atau sampel untuk agregasi .NET COM di luar sana. Saya akan mencoba kembali ke sana.
Petr Krebs
@Kirk: BTW - Kami mengalami beberapa masalah yang sangat aneh ketika mencoba melakukan ekstensi menggunakan .NET 4 - jadi saya tidak akan merekomendasikannya. Saya akhirnya harus backport satu ton kode kami ke 3.5sp1 untuk mendapatkan hal-hal untuk berfungsi dengan baik, setidaknya dengan 10sp1. (Satu contoh - berlangganan ke acara dokumen tertentu, dan tidak melakukan apa pun, akan menonaktifkan menu klik kanan di ArcMap - meskipun itu fungsionalitas yang sama sekali tidak terkait ...)
Reed Copsey