Каковы последствия использования универсальных типов в .NET для хранения объектов ArcObject, таких как ILayer, IField и т. Д.?
Компилятор выдает мне предупреждение при использовании таких значений
public class Foo
{
private List<ILayer> fooLayers;
public List<ILayer> FooLayers
{
get { ... }
set { ... }
}
}
Вот предупреждение:
Предупреждение 15 Обработка предупреждений экспортера библиотеки типов «ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (value), ArcMemorialCore». Предупреждение: экспортер библиотеки типов обнаружил экземпляр универсального типа в подписи. Общий код не может быть экспортирован в COM. ArcMemorialCore
Меня беспокоит не только наличие предупреждения, но и хорошие методы проектирования, производительность и т. Д.
arcobjects
.net
Джордж Сильва
источник
источник
Ответы:
Вы получили предупреждение, потому что ваш класс (или сборка) помечен:
Это заставляет компилятор выдавать предупреждения, когда вы используете типы, несовместимые с COM-объектами.
При этом нет проблем с использованием обобщенных типов с типами ArcObject. Однако вы должны использовать их только для типов, которые являются внутренними для вашего приложения, т. Е. Когда вы работаете с набором значений.
источник
List<object>
. Переход с CLR на COM + не должен быть проблемой.У меня нет проблем с его компиляцией.
Я использую C # 3.5
источник