2011-02-24 103 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方法,当我把它作为我的IGuitar接口的参数,其在兴田电吉他类,我会得到一个编译时错误执行。但是,我没有。

我执行错了吗?

我的目标是将IMusicInstrument实现为通用类型的IGuitar接口,以满足IMusiInstrument和IGuitar的要求。

任何想法?

回答

1

你还没有说ElectricGuitar实现IMusicInstrument ...你刚刚说,它实现IGuitar<ElectricGuitar, IMusicInstrument>,并没有InstrumentType方法。目前还不清楚为什么根据IGuitar<T, K>中的K类型参数,因为它没有在接口中使用。