You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI+Prism开发遇CS0263错误:App部分类基类声明不一致求助

解决MAUI+Prism中CS0263: Partial declarations of 'App' must not specify different base classes错误

这个错误的核心是App作为分部类(partial),XAML文件与C#代码文件声明的基类不一致——XAML中继承自原生Application,而C#代码中继承自PrismApplication,C#不允许分部类存在不同的基类声明。以下是具体解决步骤:


1. 修改App.xaml的基类声明

将XAML中的<Application>替换为Prism的PrismApplication,同时引入Prism.Maui的命名空间:

<?xml version="1.0" encoding="UTF-8" ?>
<prism:PrismApplication xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:prism="clr-namespace:Prism.Maui;assembly=Prism.Maui"
             x:Class="MauiApp1.App">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources/Styles/Colors.xaml" />
                <ResourceDictionary Source="Resources/Styles/Styles.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</prism:PrismApplication>

2. 修正App.xaml.cs的命名空间引用

移除不必要的别名,直接引用Prism.Maui命名空间,确保基类指向正确:

using MauiApp1.Services.Core;
using Prism.Ioc;
using Prism.Maui;

namespace MauiApp1
{
    public partial class App : PrismApplication 
    {
        protected override async void OnInitialized()
        {
            InitializeComponent();

            await NavigationService.NavigateAsync("NavigationPage/MainPage");
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            //containerRegistry.RegisterSingleton<IAppInfo, AppInfoImplementation>();

            containerRegistry.RegisterForNavigation<NavigationPage>();
            containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>();
        }
    }
}

3. 调整CreateMauiApp初始化逻辑

使用Prism提供的UsePrismApp<App>扩展方法替代原生UseMauiApp<App>,确保Prism容器和导航系统正确初始化:

using Prism.Maui;

namespace MauiApp1
{
    public static class MauiProgram
    {
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                .UsePrismApp<App>(prism =>
                {
                    // 可在此补充额外类型注册,或留空(App类的RegisterTypes已处理)
                })
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });

            return builder.Build();
        }
    }
}

额外注意事项

  • 确保已安装与当前MAUI版本兼容的Prism.Maui NuGet包
  • 确认App.xaml的x:Class属性与App.xaml.cs的命名空间、类名完全一致
  • 不要删除OnInitialized方法中的InitializeComponent();调用,否则XAML资源无法加载

内容的提问来源于stack exchange,提问作者Official Essama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:08:19