Реалізуйте спеціальні функції ArcGIS за допомогою C #?


11

Чи можливо реалізувати власні функції у .NET?

Якщо так, то як?

Я підозрюю, що проблема може зробити агрегацію COM з .NET, але я нічого не можу знайти на цьому ...

Хтось знає, чи можна створити час виконання COM-обгортка для дзвінка для класу .NET, що підтримує COM_INTERFACE_ENTRY_AGGREGATE_BLIND?


Чи не створили б ви обгортання, що викликається COM (CCW), а не обгортку, яку можна викликати під час виконання (RCW), оскільки ви збираєтеся публікувати керований (.NET) ко-клас для некерованого фреймворку (ArcObjects)?
stakx

Я оновив свою відповідь, щоб відобразити нові функції в .NET 4, де реалізація агрегації COM фактично можлива.
Петро Кребс

Крім того, хоча я не маю доказів для цього, здається, що керований C ++ надає вам ще трохи свободи під час роботи з COM. Якщо ви не знайдете хорошого способу зробити це за допомогою C #, ви можете ознайомитись з керованою C ++ для критичних фрагментів коду.
stakx

Відповіді:


4

Ви не зможете реалізувати чисту агрегацію COM в .NET 3.5 або новішої версії , але вам може пощастити в .NET 4, який додає новий інтерфейс ICustomQueryInterface , що дозволяє вам перенаправляти запити інтерфейсу належним чином. Більше інформації з включеним зразком можна знайти в кодеплексі .

Я також рекомендую пройти по зразку документів C ++ ESRI . Посилання для 9.0, але я підозрюю, що цей конкретний зразок не змінив жодного біта.


Оскільки ця проблема мене дуже цікавить, я спробую перенести зразок ESRI до .NET 4 C #.
Петро Кребс

Привіт, Петре, це було б чудово, щоб мати C # версію зразка! Навіть незважаючи на те, що ArcGIS 10.0 PIA призначений для 3,5, я думаю, що користувацькі функції все ще можуть бути 4,0 (?), Я додаю щедрості до цього питання за пару днів.
Кірк Куйкендалл

@Petr як приходить цей зразок;)
blah238

@ blah238: виявилося, це не так просто, як це виглядало ..;) Немає багато документації чи зразків щодо .NET COM агрегації там. Я спробую повернутися до цього.
Петро Кребс

@Kirk: BTW - У нас виникли деякі дійсно дивні проблеми при спробах зробити розширення за допомогою .NET 4 - тому я б не рекомендував це. Мені в кінцевому підсумку довелося підтримувати тонну нашого коду до 3,5sp1, щоб змусити роботу працювати належним чином, принаймні, з 10sp1. (Один із прикладів - підписка на певні події документа та нічого іншого не робитиме, відключить меню правої кнопки миші в ArcMap - навіть якщо це абсолютно не пов'язана функціональність ...)
Reed Copsey
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.