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

求助:编写继承PathSegment类的类时遭遇CS1729错误该如何解决?

解决继承PathSegment时的CS1729错误

CS1729错误的核心原因是:PathSegment类没有公共的无参构造函数,你的子类构造函数默认会尝试调用基类的无参构造函数,但编译器找不到匹配的公共构造函数,因此报错。

修正后的代码(继承PathSegment)

public class BindableLineSegment : PathSegment
{
    // 显式调用基类的受保护无参构造函数
    public BindableLineSegment() : base()
    {
    }

    // 必须正确实现Freezable要求的CreateInstanceCore方法
    protected override Freezable CreateInstanceCore()
    {
        return new BindableLineSegment();
    }
}

关键说明

  • 显式添加: base():明确指定调用基类的受保护无参构造函数,解决构造函数不匹配的问题。
  • 正确实现CreateInstanceCore:Freezable子类必须返回当前类的新实例,不能抛出NotImplementedException,否则在对象冻结、克隆等操作时会出现运行时错误。

更合理的替代方案

如果你的目标是自定义可绑定的线段类,更推荐继承LineSegment(它是PathSegment的子类,拥有公共构造函数),示例代码:

public class BindableLineSegment : LineSegment
{
    public BindableLineSegment() : base()
    {
    }

    public BindableLineSegment(Point point, bool isStroked) : base(point, isStroked)
    {
    }

    protected override Freezable CreateInstanceCore()
    {
        return new BindableLineSegment();
    }

    // 在此添加自定义依赖属性以实现绑定功能
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:56:02