Как упорядочить строку .NET в варианте для вызова COM - PullRequest
1 голос
/ 08 октября 2009

Я использую стороннюю библиотеку 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, но документация по правильному использованию этого кажется немного тонкой на месте, поэтому любой пример кода будет полезен.

1 Ответ

3 голосов
/ 08 октября 2009

Используйте класс BStrWrapper:

comObject.setValue(new BStrWrapper(str));
...