Implementar recursos personalizados do ArcGIS com C #?

11

É possível implementar recursos personalizados no .NET?

Se sim, como?

Eu suspeito que o problema está sendo capaz de fazer agregação COM com o .NET, mas não consigo encontrar nada sobre isso ...

Alguém sabe se é possível criar um tempo de execução Wrapper de chamada COM para uma classe .NET que oferece suporte a COM_INTERFACE_ENTRY_AGGREGATE_BLIND?

Kirk Kuykendall
fonte
Você não criaria um invólucro que pode ser chamado de COM (CCW) em vez de um invólucro que pode ser chamado de tempo de execução (RCW), desde que você vai publicar uma co-classe gerenciada (.NET) em uma estrutura não gerenciada (ArcObjects)?
stakx
Atualizei minha resposta para refletir novos recursos no .NET 4, onde a implementação da agregação COM é realmente possível.
Petr Krebs
Além disso, embora eu não tenha nenhuma prova disso, parece que o C ++ gerenciado concede a você mais liberdade ao lidar com o COM. Caso você não encontre uma boa maneira de fazer isso com C #, consulte o C ++ gerenciado para obter as partes críticas do código.
stakx

Respostas:

4

Você não conseguirá implementar agregação COM pura no .NET 3.5 ou inferior, mas poderá ter sorte no .NET 4, que adiciona a nova interface ICustomQueryInterface , permitindo redirecionar as consultas da interface corretamente. Mais informações com uma amostra incluída podem ser encontradas no codeplex .

Também recomendo prosseguir com o exemplo de documentos C ++ ESRI . O link é para 9.0, mas suspeito que esse exemplo em particular não tenha sido alterado.

Petr Krebs
fonte
Como esse problema me interessa muito, tentarei portar a amostra da ESRI para o .NET 4 C #.
Petr Krebs
Ei Petr, seria ótimo ter uma versão C # da amostra! Embora os PIAs do ArcGIS 10.0 sejam para 3.5, acho que os recursos personalizados ainda podem ser 4.0 (?). Acrescentarei uma recompensa a essa questão em alguns dias.
Kirk Kuykendall
@Petr como é que a amostra vindo;)
blah238
@ blah238: descobriu-se que não é tão fácil quanto parecia ..;) Não há muita documentação ou amostras quanto à agregação do .NET COM por aí. Vou tentar voltar a isso.
Petr Krebs
@Kirk: BTW - Encontramos alguns problemas realmente estranhos ao tentar fazer extensões usando o .NET 4 - então eu não o recomendaria. Acabei tendo que suportar uma tonelada de nosso código para 3.5sp1 para que as coisas funcionassem corretamente, pelo menos com 10sp1. (Um exemplo - a subscrição de determinados eventos do documento, e não fazer nada mais, vai desativar menus do botão direito no ArcMap - mesmo que seja funcionalidade totalmente alheios ...)
Reed Copsey