我的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
});
答案 0 :(得分:0)
您的自定义Shape
类应该实际返回某种Geometry
。这至少会编译:
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);
}
}
}
但是如果你不知道从DefiningGeometry
属性返回什么几何体,你可能会问自己是否真的想要首先创建一个自定义Shape
类......
答案 1 :(得分:-1)
查看您展示的代码:
1)当你“扩展”一个类时,假定DefiningGeometry是一个抽象属性,你需要为它明确地提供一个实现。 C#会使用'NotImplementedException'自动实现它,这样至少它可以编译。
2)我已经尝试了创建实例的代码,并且基于上面的内容,它不应该调用'DefiningGeometry'属性。因此,它实际上不应该抛出'NotImplementedException'。您的代码中可能还有其他内容可能会触发该异常。
- >尝试mm8建议给出一个实际的实现来验证你的代码是否确实调用了DefiningGeometry方法。在不改变这一点的情况下,您的代码应该编译 - 但是如果现在它没有导致异常,那么您的其他代码可能会调用此属性。
- >我猜测在这段代码中,name = option
,这里的选项是在其他地方声明的变量(并且它没有调用不同方法的'get'实现) - 因为这可能是另一种可能的解释