过去几周我一直在为这个问题发疯。我有一个 C# Com 对象需要将属性更改通知发送到 C++ Com 对象。 VB 中的等价物是使用如下所示的代码 PropertyChanged“propertyName”。
在 C++ 中相当于使用 ATL 中的 CFirePropNotifyEvent 类。
C++ COM 和 VB COM 对象不实现专门的事件接口(interface),因此上面给出了等效项。需要接收事件的 C++ COM 对象基于 IPropertyNotifySink,afaik。
C# 中的等价物是什么? 我试过:
- INotifyPropertyChanged 从 System.ComponentModel
- 我实现了 IObjectWithSite 并尝试将 setSite 中接收到的站点对象转换为 IPropertyNotifySink。
- 我在 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/