如何使用IPropertyNotifySink触发属性更改通知从C#更改为COM?

时间:2010-12-15 21:12:05

标签: c# c++ com interop

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

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

C ++ COM和VB COM对象没有实现专门的事件接口,因此等价于上面给出。需要接收事件的C ++ COM对象基于IPropertyNotifySink,afaik。

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

  1. 来自System.ComponentModel的INotifyPropertyChanged
  2. 我实现了IObjectWithSite,并尝试将setSite中收到的站点对象强制转换为IPropertyNotifySink。
    1. 我在C ++ / ATL中找不到CFirePropNotifyEvent的等价物,这是C ++代码所使用的。
  3. 请帮助..

    先谢谢..

1 个答案:

答案 0 :(得分:1)

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

如果您希望.NET对象提供COM事件,则需要在这些.NET对象中提供IConnectionPointContainer的实现。

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