2011-02-24 7 views
2

이 코드를 작성했습니다.일반 인터페이스 구현

public interface IMusicInstrument 
{ 
    string InstrumentType(int InstrumentId);     
} 

public interface IGuitar<T, K> where T : GuitarBase where K : IMusicInstrument 
{ 
    string Name { get; set; } 
    string GetType(T t); 
} 

public class ElectricGuitar : GuitarBaseExtended, IGuitar<ElectricGuitar, IMusicInstrument> 
{ 
    public string Name { get; set; } 
    public string GetType(ElectricGuitar t) 
    { 
     return "The electric guitar is: " + t.Name; 
    } 
} 

나는 생각했다 그 IMusicInstrument 내가 InstrumentType라는 메소드를 구현하는 것이 필요하기 때문에 그 내가 컴파일 타임 오류를 얻을 것 HTE 전기 기타 클래스에 구현되어 내 IGuitar 인터페이스의 매개 변수로 포함 할 때. 그러나 나는 그렇지 않습니다.

내가 잘못 구현하고 있습니까?

내 목표는 IMusicInstrument를 일반 유형의 IGuitar 인터페이스에 구현하여 IMusiInstrument와 IGuitar의 요구 사항이 모두 적용되도록하는 것입니다.

아이디어가 있으십니까? 당신은 ElectricGuitarIMusicInstrument 구현 말했다하지 않은

답변

1

... 당신이 그냥 IGuitar<ElectricGuitar, IMusicInstrument> 구현하고, 즉, InstrumentType 방법이 없음을 말했다했습니다. K 유형 매개 변수가 IGuitar<T, K>에있는 이유는 인터페이스 내에서 사용되지 않는다는 점에서 명확하지 않습니다.