Benutzerdefinierte ArcGIS-Funktionen mit C # implementieren?


11

Ist es möglich, benutzerdefinierte Funktionen in .NET zu implementieren ?

Wenn das so ist, wie?

Ich vermute, dass das Problem in der Lage ist, eine COM-Aggregation mit .NET durchzuführen, aber ich kann nichts dazu finden ...

Weiß jemand, ob es möglich ist, eine zu erstellen Laufzeit Aufrufbarer COM-Wrapper für eine .NET-Klasse, die COM_INTERFACE_ENTRY_AGGREGATE_BLIND unterstützt?


Würden Sie nicht einen COM-Callable Wrapper (CCW) anstelle eines Runtime Callable Wrapper (RCW) erstellen, da Sie eine verwaltete (.NET) Co-Klasse in einem nicht verwalteten Framework (ArcObjects) veröffentlichen werden?
Stakx

Ich habe meine Antwort aktualisiert, um neue Funktionen in .NET 4 widerzuspiegeln, bei denen die Implementierung der COM-Aggregation tatsächlich möglich ist.
Petr Krebs

Auch wenn ich keinen Beweis dafür habe, scheint es, dass Managed C ++ Ihnen mehr Freiheit beim Umgang mit COM gewährt. Falls Sie mit C # keinen guten Weg finden, dies zu tun, können Sie in Managed C ++ nach den kritischen Codeteilen suchen.
Stakx

Antworten:


4

Sie können keine reine COM-Aggregation in .NET 3.5 oder niedriger implementieren, haben jedoch möglicherweise Glück in .NET 4, in dem die neue ICustomQueryInterface- Schnittstelle hinzugefügt wird, sodass Sie die Schnittstellenabfragen ordnungsgemäß umleiten können. Weitere Informationen mit einem Beispiel finden Sie auf Codeplex .

Ich empfehle auch entlang der C ++ ESRI docs fortzufahren Probe . Der Link ist für 9.0, aber ich vermute, dass sich dieses spezielle Beispiel kein Bit geändert hat.


Da mich dieses Problem sehr interessiert, werde ich versuchen, das ESRI-Beispiel auf .NET 4 C # zu portieren.
Petr Krebs

Hey Petr, das wäre toll, eine C # -Version des Beispiels zu haben! Obwohl die ArcGIS 10.0-PIAs für 3.5 sind, können benutzerdefinierte Funktionen immer noch 4.0 (?) Sein. Ich werde dieser Frage in ein paar Tagen eine Prämie hinzufügen.
Kirk Kuykendall

@Petr wie kommt das Beispiel;)
blah238

@ blah238: Es stellte sich heraus, dass es nicht so einfach ist, wie es aussah ..;) Es gibt nicht viel Dokumentation oder Beispiele zur .NET COM-Aggregation. Ich werde versuchen, darauf zurückzukommen.
Petr Krebs

@Kirk: Übrigens - Beim Versuch, Erweiterungen mit .NET 4 durchzuführen, sind einige wirklich seltsame Probleme aufgetreten - daher würde ich es nicht empfehlen. Am Ende musste ich eine Tonne unseres Codes auf 3.5sp1 zurückportieren, damit die Dinge richtig funktionieren, zumindest mit 10sp1. (Ein Beispiel - das Abonnieren bestimmter Dokumentereignisse und nichts anderes wird die Rechtsklick-Menüs in ArcMap deaktivieren - obwohl es sich um eine völlig unabhängige Funktionalität handelt ...)
Reed Copsey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.