使用C#中的COM属性时出现错误CS1545

时间:2018-09-13 13:38:30

标签: c# com com-interop

我已经创建了具有读/写属性的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 :(得分:1)

错误的原因是属性在getter和setter中应该具有相同的类型。

将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); 
};

问题消失了。