C#でオブジェクトをキャストして、インターフェイスで宣言されているオブジェクトメソッド以外のオブジェクトメソッドを使用できるという問題があります。以下は、私が話していることの簡単な例です。すべてのオブジェクト機能を使用できるようにC#でインターフェイスをキャストする
public interface IShape
{
void Print();
}
public class Square : IShape
{
#region IShape Members
public void Print()
{
HttpContext.Current.Response.Write("Square Print Called");
}
#endregion
public void PrintMore()
{
HttpContext.Current.Response.Write("Square Print More Called");
}
}
なぜこのコードが呼び出されると、PrintMore()にアクセスできないのですか?
IShape s = (Square)shape;
s.PrintMore() // This is not available. only Print() is.
助けと説明が役に立ちますか?このコードs
で
オブジェクトが「正方形」ではなく、「正方形」ではないためです。キャストの「問題」です。それは完全に正常です:) – ykatchou
あなたのエンドリージョンが間違った場所にあります。それはちょっと混乱します。 – CodesInChaos
@CodeInChaos:そうは思わない。インターフェイスにはメソッドが1つしかなく、そのメソッドはその領域内にあります。非インターフェイスメソッドは、その外にあります。 – Chris