Это не может быть сделано по-вашему, но у вас все еще есть некоторые возможности.
Динамические array
(объявлено без []), string
(AnsiString) и Variant
являются указателями на «магические» структуры (они имеют счетчик ссылок и другие данные о отрицательных смещениях), которые обрабатываются встроенный компилятор.
Если вы действительно хотите использовать эти типы, вам нужно сериализовать и материализовать их по интерфейсу (используя некоторый двоичный формат дампа, JSON и т. Д.).
Вы можете попробовать использовать любой из базовых типов (например, array[]
, ShortString
, record
), который будет работать именно так, как вы ожидаете (остерегайтесь индексации на основе ShortString 1 с длиной, хранящейся в 0) используя StructLayout
, если вы не смешиваете их с управляемыми типами.
Также у меня есть хороший опыт использования интерфейсов (IInterface
/ IDispatch
через COM
InterOp) для прямой передачи ссылок на объекты между Delphi и C # кодом.
Конечно, вы ограничены в вызове методов интерфейсов, но уровень взаимодействия может обрабатывать как минимум WideString
(приятно) и некоторые виды Variant
(некрасиво) для вы.