什么是可组合运行时 class?
What is a composable runtime class?
我正在尝试使用 C++/WinRT 创建一个简单的 xaml 应用程序。
我来自 WPF 背景,在那里有一个基础是很常见的 class
实现 INotifyPropertyChanged 并让其他 classes 继承它。
当我尝试对 C++-WinRT 执行相同操作时,我失败并出现错误
error MIDL4006: [msg]A runtime class can derive only from a composable runtime class.
下面是其余相关代码供参考:
ObservableObject.idl:
namespace Example
{
runtimeclass ObservableObject : Windows.UI.Xaml.DependencyObject, Windows.UI.Xaml.Data.INotifyPropertyChanged
{
ObservableObject();
}
}
MainViewModel.idl:
import "ObservableObject.idl";
namespace Example
{
runtimeclass MainViewModel : ObservableObject
{
MainViewModel();
Int32 MyProperty;
}
}
那么什么是可组合运行时 class?有没有办法用 C++/WinRT 实现这一点?
我真的不想每次定义新的可绑定 class.
时都重复 INotifyPropertyChanged 实现
如果您从 DependencyObject
继承,您实际上不需要实现 INotifyPropertyChanged
,反之亦然(即使在 WPF 中)。
不建议在 WinRT 类型中继承自定义运行时class,因为JavaScript不知道继承,因此 App Cert Kit 在这种情况下会失败。
如果您不想每次都编写相同的逻辑,请声明 C++ 本机 class 并实现接口(不要继承 winrt::implement
)。让实现class继承它。
我正在尝试使用 C++/WinRT 创建一个简单的 xaml 应用程序。
我来自 WPF 背景,在那里有一个基础是很常见的 class 实现 INotifyPropertyChanged 并让其他 classes 继承它。
当我尝试对 C++-WinRT 执行相同操作时,我失败并出现错误
error MIDL4006: [msg]A runtime class can derive only from a composable runtime class.
下面是其余相关代码供参考:
ObservableObject.idl:
namespace Example
{
runtimeclass ObservableObject : Windows.UI.Xaml.DependencyObject, Windows.UI.Xaml.Data.INotifyPropertyChanged
{
ObservableObject();
}
}
MainViewModel.idl:
import "ObservableObject.idl";
namespace Example
{
runtimeclass MainViewModel : ObservableObject
{
MainViewModel();
Int32 MyProperty;
}
}
那么什么是可组合运行时 class?有没有办法用 C++/WinRT 实现这一点? 我真的不想每次定义新的可绑定 class.
时都重复 INotifyPropertyChanged 实现如果您从 DependencyObject
继承,您实际上不需要实现 INotifyPropertyChanged
,反之亦然(即使在 WPF 中)。
不建议在 WinRT 类型中继承自定义运行时class,因为JavaScript不知道继承,因此 App Cert Kit 在这种情况下会失败。
如果您不想每次都编写相同的逻辑,请声明 C++ 本机 class 并实现接口(不要继承 winrt::implement
)。让实现class继承它。