对应XAML中prism:PrismApplication的代码隐藏分部类正确基类写法?
关于Prism WPF中App分部类基类的问题解答
问题背景
我跟着Prism WPF入门教程操作,先把App.xaml的根元素改成prism:PrismApplication并指定x:Class="WpfApp1.App";接着在App.xaml.cs里让App类继承PrismApplication替换原有的Application类,但出现CS0263错误:“Partial declaration of 'App' must not specify different base classes”。删掉代码隐藏里的基类声明后错误消失,现在想知道:对应XAML里的prism:PrismApplication,代码隐藏分部类的正确基类写法是什么?
解答
在WPF的分部类机制里,XAML文件的根元素已经指定了基类prism:PrismApplication,编译器会自动生成对应的分部类代码,把基类关联到你的App类上。这时候如果在代码隐藏文件(App.xaml.cs)里再显式声明基类,就会导致两个分部类的基类冲突,触发CS0263错误。
正确的写法是:代码隐藏里的App类不要显式声明基类,只保留分部类的定义即可,示例代码如下:
namespace WpfApp1 { public partial class App { // 可重写PrismApplication的核心方法,比如创建主窗口 protected override Window CreateShell() { return Container.Resolve<MainWindow>(); } } }
原理很简单:XAML中的prism:PrismApplication已经定义了这个分部类的基类,代码隐藏作为分部类的另一部分,不需要重复声明基类。编译器会自动合并两个分部类的定义,最终App类的基类就是PrismApplication,完全符合Prism的要求。
内容的提问来源于stack exchange,提问作者Sabuncu
相关产品推荐
相关产品推荐

