Ошибка CS1545 при использовании свойства COM из C # - PullRequest
0 голосов
/ 13 сентября 2018

Я создал интерфейс COM со свойствами чтения / записи:

[
    object,
    uuid(...),
    dual,
    pointer_default(unique)
]
IInterfaceWithProperty : IDispatch
{
     [propget, id(1)] HRESULT Property([out, retval] IInterface2** ppObject); 
     [propput, id(1)] HRESULT Property([in] IInterface* pObject); 
};

И при попытке использовать в в C #:

var value = object.Property;
object.Property = value;

получил следующую ошибку:

error CS1545: Property, indexer, or event 'IInterfaceWithProperty .Property' is not supported 
by the language; try directly calling accessor methods 
'IInterfaceWithProperty.get_Property()' or 
'IInterfaceWithProperty.set_Property(IInterface)'

В чем может быть причина?

1 Ответ

0 голосов
/ 13 сентября 2018

Причина ошибки состояла в том, что свойство должно иметь одинаковый тип в методах получения и установки.

После изменения IInterfaceWithProperty на

[
    object,
    uuid(...),
    dual,
    pointer_default(unique)
]
IInterfaceWithProperty : IDispatch
{
     [propget, id(1)] HRESULT Property([out, retval] IInterface2** ppObject); 
     [propput, id(1)] HRESULT Property([in] IInterface2* pObject); 
};

проблема исчезла.

...