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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从C#使用COM属性时出现错误CS1545相关的知识,希望对你有一定的参考价值。

我创建了具有读/写属性的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)'

可能是什么原因?

答案

错误的原因是属性在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); 
};

问题消失了。

以上是关于从C#使用COM属性时出现错误CS1545的主要内容,如果未能解决你的问题,请参考以下文章

为啥在访问二级指针时出现分段错误错误? C语言

ViewPager - 将数据从片段发送到活动时出现 Android 错误 setCurrentItem(int,boolean)

在 .net 5 上配置 Elmah 时出现错误 CS 7036

在片段java类中使用“this”和getLastSignedInAccount时出现错误[重复]

在 cs50 ide 中使用烧瓶时出现内部服务器错误

使用管道时出现属性绑定错误