Я использую стороннюю библиотеку COM из C #.
Существуют методы get / set, которые принимают параметр типа VARIANT (тип VT_BSTR).
В оболочке .NET эти параметры отображаются как тип object
, т.е.
object getValue();
void setValue( object val );
Метод getValue работает нормально, я выполняю простое приведение объекта к строке:
string str = (string)comObject.getValue();
но установка строки подобным образом не делает:
string str = "test";
comObject.setValue( str );
Сторонней библиотеке это не нравится и генерирует исключение. Должно быть, ожидается VARIANT типа VT_BSTR (как это работает с нативным C ++). Итак, мой вопрос, как мне создать один из них в C #?
Я смотрел на такие методы, как Marshal.GetNativeVariantForObject
, но документация по правильному использованию этого кажется немного тонкой на месте, поэтому любой пример кода будет полезен.