实现通用接口
问题描述:
我写过这段代码。实现通用接口
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的要求。
任何想法?
答
你还没有说ElectricGuitar
实现IMusicInstrument
...你刚刚说,它实现IGuitar<ElectricGuitar, IMusicInstrument>
,并这没有InstrumentType
方法。目前还不清楚为什么根据IGuitar<T, K>
中的K
类型参数,因为它没有在接口中使用。