Implementare le funzionalità personalizzate ArcGIS con C #?


11

È possibile implementare funzionalità personalizzate in .NET?

Se é cosi, come?

Ho il sospetto che il problema sia in grado di fare l' aggregazione COM con .NET, ma non riesco a trovare nulla su questo ...

Qualcuno sa se è possibile creare un runtime Wrapper COM richiamabile per una classe .NET che supporta COM_INTERFACE_ENTRY_AGGREGATE_BLIND?


Non vorresti creare un wrapper (CCW) callable COM piuttosto che un wrapper (RCW) runtime-callable, dal momento che pubblicherai una sottoclasse gestita (.NET) in un framework non gestito (ArcObjects)?
stakx,

Ho aggiornato la mia risposta per riflettere le nuove funzionalità di .NET 4 in cui è effettivamente possibile implementare l'aggregazione COM.
Petr Krebs,

Inoltre, anche se non ne ho alcuna prova, sembra che Managed C ++ ti dia un po 'più di libertà quando si tratta di COM. Nel caso in cui non trovi un buon modo per farlo con C #, puoi dare un'occhiata a Managed C ++ per i pezzi di codice critici.
stakx,

Risposte:


4

Non sarai in grado di implementare la pura aggregazione COM in .NET 3.5 o versioni precedenti , ma potresti essere fortunato in .NET 4, che aggiunge la nuova interfaccia ICustomQueryInterface , permettendoti di reindirizzare correttamente le query dell'interfaccia. Ulteriori informazioni con un campione incluso sono disponibili su codeplex .

Consiglio anche di procedere lungo l' esempio di documenti ESRI C ++ . Il collegamento è per 9.0, ma sospetto che questo particolare esempio non sia cambiato di un bit.


Poiché questo problema mi interessa molto, proverò a eseguire il porting dell'esempio ESRI su .NET 4 C #.
Petr Krebs,

Ehi Petr, sarebbe bello avere una versione C # dell'esempio! Anche se i PIA di ArcGIS 10.0 sono per 3.5, suppongo che le funzionalità personalizzate possano essere ancora 4.0 (?) Aggiungerò un premio a questa domanda tra un paio di giorni.
Kirk Kuykendall,

@Petr come sta arrivando quel campione;)
blah238,

@ blah238: si è scoperto che non è così semplice come sembrava ..;) Non c'è molta documentazione o esempi per quanto riguarda l'aggregazione COM .NET. Proverò a tornarci.
Petr Krebs,

@Kirk: BTW - Ci siamo imbattuti in alcuni problemi davvero strani quando provavamo a fare estensioni usando .NET 4 - quindi non lo consiglierei. Ho finito per dover eseguire il backport di una tonnellata del nostro codice su 3.5sp1 per far funzionare correttamente le cose, almeno con 10sp1. (Un esempio: iscriversi a determinati eventi del documento e non fare nient'altro disabiliterà i menu del tasto destro in ArcMap - anche se è una funzionalità totalmente indipendente ...)
Reed Copsey
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.