我正在尝试在 C++/CLI 中实现一个抽象的 C# 类。这个抽象基类已经在实现 INotifyPropertyChanged 并且如用 C# 编写的那样:
public abstract class BaseClass : INotifyPropertyChanged
在 C++/CLI 程序集中,我确实有另一个实现 INotifyPropertyChanged 的接口:
public interface class IAnotherNotifyPropertyChangedClass : public INotifyPropertyChanged
现在,当从抽象 C# 类 BaseClass 继承并在 C++/CLI 中实现 IAnotherNotifyPropertyChangedClass 时,我得到以下信息:
public ref class AnotherNotifyPropertyChangedClass : public BaseClass, public IAnotherNotifyPropertyChangedClass
这会导致以下编译错误:
error C3766: 'AnotherNotifyPropertyChangedClass' must provide an implementation for the interface method 'void System::ComponentModel::INotifyPropertyChanged::PropertyChanged::add(System::ComponentModel::PropertyChangedEventHandler ^)'
一旦我从 IAnotherNotifyPropertyChangedClass 接口声明中删除 INotifyPropertyChanged,一切都编译得很好。这是为什么?使用 C# 时,此声明可以正常编译。我正在使用 VS 2012 并编译一个 .NET 3.5 混合模式程序集。
提前致谢!
干杯!
编辑:类似的问题(没有 C#)在这里:http ://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/3047b8d1-348c-4ca6-b3f3-c396c03fedf7/ C++ 中的这种行为也是如此/CLI 设计的?!