Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 扩展形状类时出错_C#_.net_Wpf_Visual Studio - Fatal编程技术网

C# 扩展形状类时出错

C# 扩展形状类时出错,c#,.net,wpf,visual-studio,C#,.net,Wpf,Visual Studio,我的C#代码出错了,我不知道为什么 namespace Memory { class Meme : Shape { public int used { get; set; } public string name { get; set; } protected override Geometry DefiningGeometry => throw new NotImplementedException(); } }

我的C#代码出错了,我不知道为什么

namespace Memory
{
    class Meme : Shape
    {
        public int used { get; set; }
        public string name { get; set; }

        protected override Geometry DefiningGeometry => throw new NotImplementedException();
    }
}
我得到的错误是:

System.NotImplementedException:“未实现该方法或操作。”

创建实例的代码:

options.Add(new Meme()
    {
     name  =  option,
            used = 0,
            Width = 50,
            Height = 50,
            Fill = Brushes.Red
        });

您的自定义
Shape
类应该实际返回某种
几何体。这将至少编译:

class Meme : Shape
{
    public int used { get; set; }
    public string name { get; set; }

    protected override Geometry DefiningGeometry
    {
        get
        {
            return new EllipseGeometry(new Point(50, 50), 45, 20);
        }
    }
}

但是,如果您不知道从
定义几何体
属性返回什么几何体,您可能会问自己是否真的要首先创建一个自定义
形状
类…

查看显示的代码片段:

1) 当您“扩展”一个类时,鉴于DefiningGeometry是一个抽象属性,您需要显式地为它提供一个实现。C#将使用“NotImplementedException”自动实现它,这样至少它可以编译

2) 我已经尝试过创建实例的代码,基于以上内容,它不应该调用“DefiningGeometry”属性。因此,它实际上不应该抛出“NotImplementedException”。您的代码中可能还有其他东西可能触发该异常

-->请尝试mm8的建议,给出一个实际的实现来验证您的代码是否调用DefiningGeometry方法。在不更改此属性的情况下,您的代码应该进行编译——但如果现在没有导致异常,您的其他代码可能会调用此属性


-->我猜在这段代码中,
name=option
,option是在其他地方声明的变量(它没有调用不同方法的“get”实现)——这可能是另一种可能的解释。

您看到了
抛出新的NotImplementedException()吗
代码中的行?您的定义几何体引发了该异常。仔细阅读代码。我对C非常陌生,但它自动完成了我的类,添加了一行,是的,Shape将在内部访问重写属性并引发异常。这可能会有所帮助-它为三角形指定了
几何体