인터페이스에서 선언 된 개체 메서드 외에 추가 개체 메서드를 사용할 수 있도록 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 : 나는 그렇게 생각하지 않습니다. 인터페이스에는 단 하나의 메소드가 있으며 그 메소드는 region 내부에 있습니다. 비 인터페이스 방법이 그것의 외부에 있습니다 ... – Chris