Quelles sont les implications de l'utilisation de types génériques dans .NET pour stocker des ArcObjects, tels que ILayer, IField, etc.?
Le compilateur me lance un avertissement lors de l'utilisation de ce type de valeurs
public class Foo
{
private List<ILayer> fooLayers;
public List<ILayer> FooLayers
{
get { ... }
set { ... }
}
}
Voici l'avertissement:
Avertissement 15 Traitement de l'avertissement de l'exportateur de bibliothèque de types «ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (value), ArcMemorialCore». Avertissement: l'exportateur de bibliothèque de types a rencontré une instance de type générique dans une signature. Le code générique ne peut pas être exporté vers COM. ArcMemorialCore
Ma préoccupation n'est pas seulement l'existence de l'avertissement, mais de bonnes pratiques de conception, de performances, etc.
arcobjects
.net
George Silva
la source
la source
Réponses:
L'avertissement que vous avez reçu est dû au fait que votre classe (ou votre assembly) est marquée avec:
Cela provoque le compilateur émettre des avertissements lorsque vous utilisez des types qui ne sont pas compatibles avec les objets COM.
Cela étant dit, l'utilisation de génériques avec les types ArcObject ne pose aucun problème. Vous ne devez cependant les utiliser que pour les types internes à votre application, c'est-à-dire lorsque vous travaillez avec un ensemble de valeurs.
la source
List<object>
. Passer de CLR à COM + ne devrait pas être un problème.Je n'ai aucun problème à le faire compiler.
J'utilise C # 3.5
la source