Implementar funciones personalizadas de ArcGIS con C #?


11

¿Es posible implementar características personalizadas en .NET?

¿Si es así, cómo?

Sospecho que el problema es poder hacer agregación COM con .NET, pero no puedo encontrar nada al respecto ...

¿Alguien sabe si es posible crear un tiempo de ejecución ¿Contenedor invocable COM para una clase .NET que admite COM_INTERFACE_ENTRY_AGGREGATE_BLIND?


¿No crearía un contenedor invocable COM (CCW) en lugar de un contenedor invocable en tiempo de ejecución (RCW), ya que va a publicar una clase compartida administrada (.NET) en un marco no administrado (ArcObjects)?
stakx

Actualicé mi respuesta para reflejar las nuevas características en .NET 4 donde implementar la agregación COM es realmente posible.
Petr Krebs

Además, aunque no tengo ninguna prueba de esto, parece que Managed C ++ le otorga más libertad cuando se trata de COM. En caso de que no encuentre una buena manera de hacer esto con C #, puede echar un vistazo a Managed C ++ para ver las piezas críticas de código.
stakx

Respuestas:


4

No podrá implementar la agregación COM pura en .NET 3.5 o inferior, pero puede tener suerte en .NET 4, que agrega la nueva interfaz ICustomQueryInterface , lo que le permite redirigir las consultas de la interfaz correctamente. Puede encontrar más información con una muestra incluida en codeplex .

También recomiendo continuar con la muestra de documentos ESRI de C ++ . El enlace es para 9.0, pero sospecho que esta muestra en particular no ha cambiado un bit.


Como este problema me interesa mucho, intentaré portar la muestra de ESRI a .NET 4 C #.
Petr Krebs

Hola Petr, ¡sería genial tener una versión C # de la muestra! Aunque los ArcGIS 10.0 PIA son para 3.5, creo que las características personalizadas pueden ser 4.0 (?) Agregaré una recompensa a esta pregunta en un par de días.
Kirk Kuykendall

@Petr cómo va esa muestra;)
blah238

@ blah238: resultó que no es tan fácil como parecía ...;) No hay mucha documentación o muestras en cuanto a la agregación .NET COM por ahí. Intentaré volver a ello.
Petr Krebs

@Kirk: Por cierto, nos encontramos con algunos problemas realmente extraños al intentar hacer extensiones usando .NET 4, por lo que no lo recomendaría. Terminé teniendo que cargar una tonelada de nuestro código a 3.5sp1 para que las cosas funcionen correctamente, al menos con 10sp1. (Un ejemplo: suscribirse a ciertos eventos de documentos y no hacer nada más, deshabilitará los menús de clic derecho en ArcMap, a pesar de que es una funcionalidad totalmente no relacionada ...)
Reed Copsey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.