错误扩展Shape类
即时得到一个错误在我的C#代码,我无法弄清楚,为什么错误扩展Shape类
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
类应该真正回到某种形式的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)当你是“扩展”的一类,考虑到DefiningGeometry是一个抽象属性,你会需要它明确地提供一个实现。 C#会自动使用'NotImplementedException'来实现它,至少它可以编译。
2)我试过创建实例的代码,并基于上述,它不应该调用'DefiningGeometry'属性。因此,它不应该实际抛出'NotImplementedException'。代码中可能还有其他可能触发该异常的内容。
- >尝试mm8建议给出一个实际的实现来验证您的代码是否确实调用了DefiningGeometry方法。不改变这个,你的代码应该编译 - 但是如果现在它不会导致异常,你的其他代码可能会调用这个属性。
- >我猜测在这段代码中,name = option
,这里的选项是一个在其他地方声明的变量(并且它没有调用不同方法的'get'实现) - 因为这可能另一可能的解释。
downvote的任何理由? – hsoesanto
您是否在代码中看到'throw new NotImplementedException()'行? –
你的DefiningGeometry引发了这个异常。仔细阅读代码。 – Harsh
所以即时通讯非常新,但它通过添加该行自动完成我的课程, –