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

.NET MAUI使用CommunityToolkit.MVVM报命名空间类型重复定义错误

问题原因

该报错代表MyApp.ViewModels命名空间下存在两个名为ProfilePopupViewModel的类定义,结合你使用CommunityToolkit.MVVM的场景,常见诱因有两个:

  • 项目中存在重复的类定义:比如重复创建了同名的视图模型文件、复制代码时残留了旧的同名类,即使两个文件存放在不同文件夹,只要声明的命名空间一致,就会触发冲突。
  • 视图模型类缺少partial关键字:你贴出的代码中ProfilePopupViewModel没有声明为partial类,而CommunityToolkit.MVVM的源生成器会在编译时自动生成同名的partial类,来实现[ObservableProperty]标记字段对应的公开属性逻辑。如果你的类不是partial类型,编译器会把你手写的类和源生成的类判定为两个独立的同名类,直接抛出重复定义错误,这也是你当前代码最直接的问题。
解决方案

按以下顺序排查修复即可:

  1. 全局搜索项目内所有class ProfilePopupViewModel的定义,删除多余的残留旧文件,或者修改多余类的命名空间、类名,保证同命名空间下只有一个该类的定义。
  2. 给ProfilePopupViewModel类添加partial关键字,修正后的代码如下:
// 必须添加partial关键字,允许源生成器合并生成的代码
public partial class ProfilePopupViewModel : ObservableRecipient
{
    private Profile profile;

    [ObservableProperty]
    private string id;
    [ObservableProperty]
    private string name;
    [ObservableProperty]
    private DateOnly birthDate;
    [ObservableProperty]
    private int work;
}

注:代码中同时将private Profile Profile;修改为小驼峰命名private Profile profile;,符合C#字段命名规范,避免后续给该字段加源生成特性时出现属性名和类型名冲突的问题。

  1. 如果上述操作完成后仍报错,关闭开发环境,删除项目根目录下的bin、obj文件夹,重新打开项目执行重新生成,清除历史编译残留的旧生成文件缓存即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:51:22