Взаимодействие с помощью универсальных типов

COM-модель не поддерживает понятие универсальных типов. Следовательно, универсальные типы нельзя напрямую использовать для COM-взаимодействия.

Неподдерживаемые действия

Следующие действия не поддерживаются и приведут к сбою с ошибкой E_NOINTERFACE:

  • Доступ к универсальными интерфейсам из COM.

  • Доступ к интерфейсам классов для неуниверсальных классов, производных от универсальных классов.

  • Создание интерфейсов классов для универсальных классов. Например, интерфейс _MyGenericType не может быть создан для класса MyGenericType<T>.

Поддерживаемые действия

Доступ к универсальному классу можно получить неявно, используя неуниверсальный базовый интерфейс. Например, рассмотрим следующий тип.

[C#]

class MyClass <T> : IMyClass, IEnumerable<int>
{
   …
}

COM-клиенты могут выполнять вызовы экземпляров этого типа, используя интерфейс IMyClass, но вызовы как _MyClass, _MyClass <T>, так и IEnumerable<T> закончатся неудачей.

См. также

Ссылки

Универсальные шаблоны (Руководство по программированию на C#)

Другие ресурсы

Взаимодействие с неуправляемым кодом

Generics (Visual C++)