gpt4 book ai didi

windows-runtime - 什么是可组合的运行时类?

转载 作者:行者123 更新时间:2023-12-05 04:05:07 30 4
gpt4 key购买 nike

我正在试验使用 C++/WinRT 创建一个简单的 xaml 应用程序。

我有 WPF 背景,在这个背景下有一个基类很常见实现 INotifyPropertyChanged 并让其他类继承自它。

当我尝试对 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;
}
}

那么可组合的运行时类到底是什么?有没有办法用 C++/WinRT 实现这一点?我真的不想在每次定义新的可绑定(bind)类时都重复 INotifyPropertyChanged 实现。

最佳答案

如果您从 DependencyObject 继承,您实际上不需要实现 INotifyPropertyChanged,反之亦然(即使在 WPF 中)。

在 WinRT 类型中不推荐继承自定义运行时类,因为 JavaScript 不知道继承,因此 App Cert Kit 在这种情况下会失败。

如果您不想每次都编写相同的逻辑,请声明一个 C++ native 类并实现接口(interface)(不要继承 winrt::implement)。让实现类继承自它。

关于windows-runtime - 什么是可组合的运行时类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51572715/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com