Quais são as implicações do uso de tipos genéricos no .NET para armazenar ArcObjects, como ILayer, IField, etc?
O compilador lança um aviso ao usar esse tipo de valores
public class Foo
{
private List<ILayer> fooLayers;
public List<ILayer> FooLayers
{
get { ... }
set { ... }
}
}
Aqui está o aviso:
Aviso 15 Processamento de aviso do exportador da biblioteca de tipos 'ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (value), ArcMemorialCore'. Aviso: o exportador da biblioteca de tipos encontrou uma instância de tipo genérico em uma assinatura. Código genérico não pode ser exportado para COM. ArcMemorialCore
Minha preocupação não é apenas a existência do aviso, mas também as boas práticas de design, desempenho etc.
arcobjects
.net
George Silva
fonte
fonte
Respostas:
O aviso que você recebeu é porque você tem sua classe (ou montagem) marcada com:
Isso faz com que o compilador emita avisos quando você usa tipos que não são compatíveis com objetos COM.
Dito isto, não há problema em usar genéricos com tipos de ArcObject. No entanto, você deve usá-los apenas para tipos internos ao seu aplicativo - ou seja, quando estiver trabalhando com um conjunto de valores.
fonte
List<object>
. Ir do CLR para o COM + não deve ser um problema.Não tenho problemas para compilar.
Eu estou usando c # 3.5
fonte