Welche Auswirkungen hat die Verwendung generischer Typen in .NET zum Speichern von ArcObjects wie ILayer, IField usw.?
Der Compiler gibt mir eine Warnung aus, wenn diese Art von Werten verwendet wird
public class Foo
{
private List<ILayer> fooLayers;
public List<ILayer> FooLayers
{
get { ... }
set { ... }
}
}
Hier ist die Warnung:
Warnung 15 Geben Sie die Warnungsverarbeitung für den Bibliotheksexporteur 'ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (Wert), ArcMemorialCore' ein. Warnung: Der Typbibliotheksexporter hat eine generische Typinstanz in einer Signatur gefunden. Generischer Code darf nicht nach COM exportiert werden. ArcMemorialCore
Mein Anliegen ist nicht nur die Existenz der Warnung, sondern auch gute Entwurfspraktiken, Leistung usw.
arcobjects
.net
George Silva
quelle
quelle
Antworten:
Die Warnung, die Sie erhalten haben, ist, weil Ihre Klasse (oder Versammlung) gekennzeichnet ist mit:
Dies führt dazu, dass der Compiler Warnungen ausgibt, wenn Sie Typen verwenden, die nicht mit COM-Objekten kompatibel sind.
Abgesehen davon gibt es kein Problem bei der Verwendung von Generika mit ArcObject-Typen. Sie sollten sie jedoch nur für Typen verwenden, die für Ihre Anwendung intern sind, dh wenn Sie mit einer Reihe von Werten arbeiten.
quelle
List<object>
. Der Wechsel von CLR zu COM + sollte kein Problem sein.Ich habe kein Problem damit, es zu kompilieren.
Ich benutze C # 3.5
quelle