c# - 如何使用 IPropertyNotifySink 触发从 C# 到 COM 的属性更改通知?

标签 c# c++ com interop

过去几周我一直在为这个问题发疯。我有一个 C# Com 对象需要将属性更改通知发送到 C++ Com 对象。 VB 中的等价物是使用如下所示的代码 PropertyChanged“propertyName”。

在 C++ 中相当于使用 ATL 中的 CFirePropNotifyEvent 类。

C++ COM 和 VB COM 对象不实现专门的事件接口(interface),因此上面给出了等效项。需要接收事件的 C++ COM 对象基于 IPropertyNotifySink,afaik。

C# 中的等价物是什么? 我试过:

  1. INotifyPropertyChanged 从 System.ComponentModel
  2. 我实现了 IObjectWithSite 并尝试将 setSite 中接收到的站点对象转换为 IPropertyNotifySink。
    1. 我在 C++/ATL 中找不到 CFirePropNotifyEvent 的等效项,这是 C++ 代码使用的。

请帮忙..

提前致谢..

最佳答案

我认为 .NET 的 INotifyPropertyChanged 和 COM 的 INotifyPropertySink 之间没有某种自动网关。

如果你想让.NET对象提供COM事件,你需要提供IConnectionPointContainer的实现在这些 .NET 对象中。

IConnectionPointContainer 已存在于 .NET 的 System.Runtime.InteropServices.ComType 命名空间中。

关于c# - 如何使用 IPropertyNotifySink 触发从 C# 到 COM 的属性更改通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454926/

相关文章:

c# - 动态 Excel 电子表格

c++ - 对类型的临时类型的非常量引用的初始化无效

c++ - 如何从 C++ 在 IE 中调用 eval()?

c# - 将 swagger-ui 输出保存到文件

c# - Xaml - 如何使用 ViewModel 中的 ImageSource

c# - 每个 Asp.net 回发中的 JQuery BlockUI 进度指示器

c++ - iMacro 查找元素

c++ - 当您追求性能时,类(class)是否应该执行边界检查

c++ - 处理指向接口(interface)的指针的方法的正确实现

go - 在 Golang 中通过 COM 与 Lotus Notes 交互