Есть ли таблица соответствия типов для маршалинга в P / Invoke & InterOP? - PullRequest
2 голосов
/ 17 августа 2010

Я почти похоронен тем, как разные диалекты типов сопоставляются между миром .NET и собственным миром. Такие как MFC CList и другие материалы.

Я отчаянно надеюсь на это:

  • Некоторая таблица или таблица, в которой перечислены все сопоставления между типами мира .NET и родного мира.
  • Таблица, в которой перечислены все типы, которые можно маршалировать.

Большое спасибо !!

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

Перечисление UnmanagedType дает довольно полный список целевых типов, которые вы хотите.Он охватывает все основные типы, доступные в C по крайней мере.Для пользовательских типов в C вам нужно проверить, являются ли они определениями типов стандартного типа, или, в случае структур, вам нужно переписать структуру в C # и упорядочить каждое ее поле вручную.

Классы C ++ (такие как MFC) здесь не рассматриваются.P / Invoke не поддерживает __thiscall соглашение о вызовах (т. Е. Методы класса).Распространенные сценарии импорта кода C ++ в C # состоят в том, чтобы написать оболочку COM для класса с использованием C ++ / CLI или написать оболочку на основе C из C ++ (пометить код extern "C"), а затем использовать P / Invoke для оболочки.

2 голосов
/ 17 августа 2010

Для получения информации о преобразовании типов по умолчанию попробуйте этот график out.

Для получения информации о Marhsaling в целом, проверьте эту страницу out.

...