WinRT 继承和通用代码
WinRT inheritance and common code
我想从几个 WinRT 组件中提取公共代码到一个基类,这样我就不需要复制和粘贴它。我有以下基类:
[Windows::Foundation::Metadata::WebHostHidden]
ref class ExpandableView : public Windows::UI::Xaml::DependencyObject
{
public:
static void onIsExpandedChanged(Windows::UI::Xaml::DependencyObject^ object,
Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arguments);
public:
property bool IsExpanded
{
bool get(){return (bool)GetValue(IsExpandedProperty);}
void set(bool value){SetValue(IsExpandedProperty, value);}
}
static property Windows::UI::Xaml::DependencyProperty^ IsExpandedProperty
{
Windows::UI::Xaml::DependencyProperty^ get(){return _IsExpandedProperty;}
}
protected:
ExpandableView();
virtual void viewExpanded();
virtual void viewCollapsed();
private:
void _expand();
void _collapse();
private:
static Windows::UI::Xaml::DependencyProperty^ _IsExpandedProperty;
};
我创建了一些用户控件,这些控件应该以某种方式从这个基类继承。而且不可能按照我想要的方式做到这一点,因为 winrt 类只能继承一个 ref 类,而其他应该是接口。但是我需要这个具有依赖属性的类,该属性在设置时具有一些逻辑,并且我不想在所有类中复制和过去此属性。所以问题是:如何使用 WinRT 实现它?
您是否尝试过使用模板和所需特定类的继承:
template<typename BaseClass>
ref class ExpandableView : public BaseClass;
现在重用ExpandableView
的子类可以继承它们需要的任何内容,而不仅仅是Windows::UI::Xaml::DependencyObject
。
相关文章:
- 删除C++继承中虚拟类成员的代码重复
- 删除继承中的代码重复?
- 如何定义一个没有重复代码的继承的 const 类成员函数?
- 如何编写将要继承的泛型代码?
- 继承、覆盖和虚函数,以避免重复代码
- 继承此C++代码有什么问题
- 多级继承程序代码的输出
- 代码在虚拟函数和继承方面未按预期工作
- 为什么下面的代码不会编译(c++中的继承)
- 为什么这个C++继承代码示例的行为是这样的
- 如何与模板正确重写此使用继承的C 代码
- 如何删除此与继承相关的代码气味
- 不重复代码的继承
- 继承可以用来减少C++中编译代码的大小吗?
- C++ 在向某些继承树类引入附加接口时避免代码重复
- 是C 单继承的内存布局与此C代码相同
- 通用lambda,继承和尾随返回类型:此有效代码
- 如何使用模板或继承使以下代码工作
- 在继承的接口中调用自定义代码
- C++ 中的高性能代码(继承、指向函数的指针、if)