假设我们有一个接口:C# - 铸造的对象的接口
interface ICustomShape
{
}
,我们必须从Shape类继承的类,并实现了接口:
public class CustomIsocelesTriangle : Shape, ICustomShape
{
}
会如何我会将CustomIsocelesTriangle投射到ICustomShape对象上,以便在“界面级别”上使用?
ICustomShape x = (ICustomShape)canvas.Children[0]; //Gives runtime error: Unable to cast object of type 'program_4.CustomIsocelesTriangle' to type 'program_4.ICustomShape'.
调试器中的'canvas.Children [0]'类型是什么?如果它是'CustomIsocelesTriangle',你甚至不需要投射 - 如果它实现了'ICustomShape',它应该被接受。我的猜测是你正在看错类型。 – xxbbcc
canvas.Children [0]是CustomIsocelesTriangle类型。奇怪的是,它适用于我为Ellipse使用内置几何体时,但对于我定义了自己的路径几何体的任何对象,它会给出这个错误(尽管绘制形状/ etc。一切正常) 。 – Shaku
(我试过编辑帖子来命名界面更标准的'ICustomShape',但它会改变运行时错误信息...请考虑以下公共代码的默认C#命名指南 - 即像'ISomeInterface'这样的名称界面) –