我如何从Brush继承,所以我可以添加一个Name属性?

don*_*ngx 7 c# wpf

例如:

public class DesignerPatternBrush : Brush
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想Brush通过添加一个名为的新属性来定义我自己的类Name,但是存在编译器错误:

错误CS0534:'Brushes.DesignerPatternBrush'没有实现继承的抽象成员'System.Windows.Freezable.CreateInstanceCore()'

如何向Name属性添加属性Brush

请注意此相关问题:如何在WPF中实现自定义画笔?它回答了为什么不能从字面上继承的问题Brush.但是有没有其他方式(例如使用附加属性)来实现我想要的相同效果?

fix*_*gon 2

正如编译错误消息所示,Brush 是一个抽象类 --> 你必须实现它的抽象成员

要让 Visual Studio 为您完成所有工作,有一个快捷方式。

选择 Brush 类并按 Alt + Shift + F10 --> 输入抽象类会自动实现:

public class T : Brush
{

    protected override Freezable CreateInstanceCore()
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

但这不适用于 Brush 类。Visual Studio自动实现所有可见的方法,但Brush类将一些方法定义为内部抽象

IE:

internal abstract int GetChannelCountCore();
Run Code Online (Sandbox Code Playgroud)

由于 Brush 是在PresentationCore 中定义的,我们将永远无法覆盖程序集外部的抽象方法... --> 不可能从类继承