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

继承ContentView的MeasureCompCommon被MeasureMainView继承后出现编译错误求助

解决CS0579和CS0111编译错误

错误原因分析

CS0579(重复特性)

大概率是MeasureMainView的XAML文件对应的自动生成代码中,已默认添加[XamlCompilation(XamlCompilationOptions.Compile)]特性,而你手动编写的代码文件里又重复添加了该特性,导致冲突。

CS0111(重复成员)

常见触发场景:

  • MeasureMainView的两个partial部分(手动编写的.cs文件、XAML自动生成的.g.cs文件)中,存在名称和参数完全一致的成员定义;
  • 基类MeasureCompCommon与子类MeasureMainView中,定义了同名同参数的方法/属性。

另外补充一个潜在功能问题:原基类构造函数中调用Initialized()时,控件还未被添加到父布局,this.Parent会为null,这段逻辑无法正常执行,后续需要调整执行时机。


具体修复步骤

1. 修复CS0579错误

删除MeasureMainView类上手动添加的[XamlCompilation(XamlCompilationOptions.Compile)]特性,Xamarin/.NET MAUI会在XAML对应的自动生成代码中默认注入该特性。

修改后的代码片段:

namespace POP.Component
{
    public partial class MeasureMainView : MeasureCompCommon
    {
        DisplayInfo m_MainDisplayInfo = DeviceDisplay.MainDisplayInfo;

        public MeasureMainView()
        {
            InitializeComponent();
            InitButton();
        }
        // 其他业务代码
    }
}

2. 修复CS0111错误

  • 检查MeasureMainView的XAML文件和.cs文件,确保没有重复定义同一成员(比如若InitButton方法在两个部分都有定义,需删除重复项或重命名);
  • 检查基类MeasureCompCommon与子类的成员,若存在同名同参数的成员,要么修改子类成员名称,要么将基类成员设为virtual,子类用override重写。

3. 优化基类布局清理逻辑(功能修复)

原遍历代码存在索引偏移bug,且执行时机错误,修改为在OnParentSet方法中执行反向遍历:

namespace POP.Component
{
    public partial class MeasureCompCommon : ContentView
    {
        public MeasureCompCommon()
        {
            // 移除构造函数中的Initialized调用
        }

        protected override void OnParentSet()
        {
            base.OnParentSet();
            Initialized();
        }

        private void Initialized()
        {
            if (this.Parent is StackLayout sl)
            {
                // 反向遍历避免移除元素导致索引混乱
                for (int i = sl.Children.Count - 1; i >= 0; i--)
                {
                    if (sl.Children[i] != this)
                        sl.Children.RemoveAt(i);
                }
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:54:26