¿Cuáles son las implicaciones de usar tipos genéricos en .NET para almacenar ArcObjects, como ILayer, IField, etc.?
El compilador me arroja una advertencia al usar este tipo de valores
public class Foo
{
private List<ILayer> fooLayers;
public List<ILayer> FooLayers
{
get { ... }
set { ... }
}
}
Aquí está la advertencia:
Advertencia 15 Procesador de advertencia de exportador de biblioteca de tipos 'ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (value), ArcMemorialCore'. Advertencia: el exportador de biblioteca de tipos encontró una instancia de tipo genérico en una firma. El código genérico no se puede exportar a COM. ArcMemorialCore
Mi preocupación no es solo la existencia de la advertencia, sino las buenas prácticas de diseño, rendimiento, etc.
arcobjects
.net
George Silva
fuente
fuente
Respuestas:
La advertencia que recibió es porque tiene su clase (o conjunto) marcada con:
Esto hace que el compilador emita advertencias cuando utiliza tipos que no son compatibles con los objetos COM.
Dicho esto, no hay ningún problema con el uso de genéricos con los tipos de ArcObject. Sin embargo, solo debe usarlos para los tipos que son internos a su aplicación, es decir, cuando trabaja con un conjunto de valores.
fuente
List<object>
. Pasar de CLR a COM + no debería ser un problema.No tengo ningún problema para que se compile.
Estoy usando C # 3.5
fuente