我已经创建了具有读/写属性的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)'
可能是什么原因?
答案 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);
};
问题消失了。