Wdrożenie niestandardowych funkcji ArcGIS w C #

11

Czy można zaimplementować niestandardowe funkcje w .NET?

Jeśli tak to jak?

Podejrzewam, że problemem jest możliwość agregacji COM z .NET, ale nie mogę nic znaleźć na tym ...

Czy ktoś wie, czy można utworzyć środowisko uruchomieniowe Opakowanie wywoływalne COM dla klasy .NET, która obsługuje COM_INTERFACE_ENTRY_AGGREGATE_BLIND?

Kirk Kuykendall
źródło
Czy nie utworzyłbyś opakowania z funkcją wywoływania COM (CCW) zamiast opakowania z funkcją wywoływania w środowisku wykonawczym (RCW), ponieważ zamierzasz opublikować zarządzaną klasę (.NET) w niezarządzanym środowisku (ArcObjects)?
stakx
Zaktualizowałem swoją odpowiedź, aby odzwierciedlić nowe funkcje w .NET 4, w których wdrożenie agregacji COM jest w rzeczywistości możliwe.
Petr Krebs,
Ponadto, chociaż nie mam na to żadnego dowodu, wydaje się, że Managed C ++ daje ci więcej swobody w kontaktach z COM. Jeśli nie znajdziesz dobrego sposobu na zrobienie tego w C #, możesz zajrzeć do Managed C ++ dla krytycznych fragmentów kodu.
stakx

Odpowiedzi:

4

Nie będziesz mógł zaimplementować czystej agregacji COM w .NET 3.5 lub niższej, ale możesz mieć szczęście w .NET 4, który dodaje nowy interfejs ICustomQueryInterface , umożliwiając prawidłowe przekierowanie zapytań interfejsu. Więcej informacji z dołączoną próbką można znaleźć na codeplex .

Polecam również postępować zgodnie z przykładem dokumentacji C ++ ESRI . Link jest do 9.0, ale podejrzewam, że ta konkretna próbka nie zmieniła się ani trochę.

Petr Krebs
źródło
Ponieważ ten problem bardzo mnie interesuje, spróbuję przenieść próbkę ESRI do .NET 4 C #.
Petr Krebs,
Hej Petr, świetnie byłoby mieć próbkę w wersji C #! Mimo, że ArcGIS 10.0 PIA są przeznaczone dla 3.5, wydaje mi się, że niestandardowe funkcje wciąż mogą mieć 4.0 (?) Dodam nagrodę za to pytanie za kilka dni.
Kirk Kuykendall
@Petr, jak leci ta próbka;)
blah238,
@ blah238: okazało się, że nie jest to takie proste, jak się wydawało ...;) Nie ma zbyt wiele dokumentacji ani przykładów na temat agregacji .NET COM. Spróbuję do tego wrócić.
Petr Krebs
@Kirk: BTW - Wystąpiły naprawdę dziwne problemy podczas próby rozszerzenia przy użyciu .NET 4 - więc nie polecałbym tego. Skończyło się na tym, że musiałem cofnąć tonę naszego kodu do 3.5sp1, aby wszystko działało poprawnie, przynajmniej z 10sp1. (Jeden przykład - subskrybowanie niektórych zdarzeń związanych z dokumentami i nie robienie nic innego spowoduje wyłączenie menu prawego przycisku myszy w ArcMap - nawet jeśli jest to całkowicie niezwiązana funkcjonalność ...)
Reed Copsey