2015-08-31 1 views
1

У меня есть C# Interop класс с этим свойством:IntelliSense в VB6 doens't работу с Interop и UnmanagedType.Struct

decimal ImportoDocumento { [return: MarshalAs(UnmanagedType.Struct)] get; [param: MarshalAs(UnmanagedType.Struct)] set; } 

В VB6 должно быть Variant/Decimal. Если я пытаюсь использовать его, он работает. Я могу присвоить значение, и я могу получить его значение. Проблема в том, что intellisense vb6 не работает. Я вижу другие свойства класса, но не ImportoDocumento. Intellisense важен, потому что этот класс используется от других людей.

Как я могу это сделать?

Благодаря

ответ

0

Причина, почему этот метод отсутствует IntelliSense потому, что библиотека типов экспортер дает два предупреждения:

Тип библиотеки экспортер обработки предупреждение «ClassLibrary1.Class1.get_ImportoDocumento (# 0) , ClassLibrary1 '.
Предупреждение. Метод или поле содержит недопустимую комбинацию ELEMENT_TYPE/NATIVE_TYPE.

Тип библиотеки экспортер предупреждение обработки 'ClassLibrary1.Class1.set_ImportoDocumento (значение), ClassLibrary1'.
Предупреждение. Метод или поле содержит недопустимую комбинацию ELEMENT_TYPE/NATIVE_TYPE.

Невозможно создать надлежащую информацию TLB для этого свойства, экспортер полностью ее опускает, как если бы вы использовали [ClassInterface(ClassInterfaceType.AutoDispatch)]. Без этой информации свойство доступно только для позднего связывания, поэтому оно все еще работает.

Вам необходимо указать declare the property as Object, чтобы оно было продано как вариант.

Смежные вопросы