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?

Kirk Kuykendall
fuente
¿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.

Petr Krebs
fuente
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