假設我們有一個接口: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'這樣的名稱界面) –