인터페이스의 계층 구조가 IBaseThing<T>
및 IChildThing:IBase<ChildThing>
인 경우를 가정 해 보겠습니다.인터페이스 상속 및 추상 메서드 재정의
internal abstract class Base<T>
{
public abstract IBaseThing<T> Thing {get;}
}
및
internal class Concrete:Base<ChildThing>
{
public override IChildThing Thing
{
get
{
return GetChildThing();
}
}
}
은 무엇 일어날 것은 짖는 소리입니다 :
'콘크리트'구현하지 않습니다 상속 추상적 회원 '자료 은 또한이 같은 두 개의 클래스가 있습니다. '
나는 클래스 전체에 (IChildThing)this.Thing
캐스팅을 건너 뛰고 싶습니다. 내가해야 할 일은 무엇입니까? 당신은 할 수 없습니다
public interface IBaseThing {}
public interface IChildThing : IBaseThing {}
internal abstract class Base<T> where T : IBaseThing
{
public abstract T Thing {get;}
}
internal class Concrete:Base<IChildThing>
{
public override IChildThing Thing
{
get
{
return GetChildThing();
}
}
public IChildThing GetChildThing()
{
// Your impelementation here...
return null;
}
}
'IChildThing : IBase'은 믿어지지 않는 냄새가 나는 인터페이스입니다. 'ChildThing : IBase '.. .. 그러길 바랍니다. –
nawfal
잘못된 가정 nawfal. IThings는 T가 아닙니다. –
Reza는 완벽한 예제 (아직 필요한 것만)와 유스 케이스를 게시합니다. 우리는 당신을 더 잘 도울 수 있습니다. 그렇지 않으면 그것의 모든 가정. – nawfal