C# 如何解决该错误;类名不为';t实现接口“u name”吗;?
我有一个类C# 如何解决该错误;类名不为';t实现接口“u name”吗;?,c#,.net,C#,.net,我有一个类MIDIFileKeyEventAccess,它实现了IList(IKeyEvent是我定义的一个接口)。代码给了我一个错误(MIDIFileKeyEventAccess没有实现接口成员IEnumerable.GetEnumerator()MIDIFileKeyEventAccess.GetEnumerator()无法实现IEnumerable.GetEnumerator(),因为它没有匹配的返回类型IEnumerator)。我已尝试将返回类型更改为IEnumerator,但也不起作用
MIDIFileKeyEventAccess
,它实现了IList
(IKeyEvent
是我定义的一个接口)。代码给了我一个错误(MIDIFileKeyEventAccess
没有实现接口成员IEnumerable.GetEnumerator()
MIDIFileKeyEventAccess.GetEnumerator()
无法实现IEnumerable.GetEnumerator()
,因为它没有匹配的返回类型IEnumerator
)。我已尝试将返回类型更改为IEnumerator
,但也不起作用这是我的代码:
public class MIDIFileKeyEventAccess : IList<IKeyEvent>
{
private MIDIFile file;
public MIDIFileKeyEventAccess(MIDIFile file)
{
this.file = file;
}
public MIDIFileKeyEventAccess(IEnumerable<IKeyEvent> content, string filePath)
{
file = new MIDIFile(filePath);
file.keyEvents.AddRange(content);
}
public IKeyEvent this[int i]
{
get
{
return file.keyEvents[i];
}
set
{
file.keyEvents[i] = value;
}
}
public IEnumerator GetEnumerator()
{
return file.keyEvents.GetEnumerator();
}
public void Add(IKeyEvent item)
{
file.keyEvents.Add(item);
}
public int IndexOf(IKeyEvent item)
{
return file.keyEvents.IndexOf(item);
}
public void Insert(int index, IKeyEvent item)
{
file.keyEvents.Insert(index, item);
}
public void RemoveAt(int index)
{
file.keyEvents.RemoveAt(index);
}
public void Clear()
{
file.keyEvents.Clear();
}
public bool Contains(IKeyEvent item)
{
return file.keyEvents.Contains(item);
}
public void CopyTo(IKeyEvent[] array, int arrayIndex)
{
file.keyEvents.CopyTo(array, arrayIndex);
}
public bool Remove(IKeyEvent item)
{
return file.keyEvents.Remove(item);
}
public int Count
{
get
{
return file.keyEvents.Count;
}
}
public bool IsReadOnly
{
get
{
return ((IList)file.keyEvents).IsReadOnly;
}
}
}
公共类MIDIFileKeyEventAccess:IList
{
私有MIDI文件;
公共MIDIFileKeyEventAccess(MIDIFile文件)
{
this.file=文件;
}
公共MIDIFileKeyEventAccess(IEnumerable内容、字符串文件路径)
{
文件=新的MIDI文件(文件路径);
file.keyEvents.AddRange(内容);
}
公共IKeyEvent此[int i]
{
得到
{
返回文件.keyEvents[i];
}
设置
{
file.keyEvents[i]=值;
}
}
公共IEnumerator GetEnumerator()
{
返回文件.keyEvents.GetEnumerator();
}
公共作废添加(IKeyEvent项目)
{
file.keyEvents.Add(项);
}
公共int索引(IKeyEvent项)
{
返回文件.keyEvents.IndexOf(项);
}
公共作废插入(整型索引,IKeyEvent项)
{
file.keyEvents.Insert(索引,项);
}
公共无效删除(整数索引)
{
file.keyEvents.RemoveAt(索引);
}
公共空间清除()
{
file.keyEvents.Clear();
}
公共布尔包含(IKeyEvent项)
{
返回文件.keyEvents.Contains(项);
}
public void CopyTo(IKeyEvent[]数组,int-arrayIndex)
{
CopyTo(数组,arrayIndex);
}
公共bool移除(IKeyEvent项目)
{
返回文件.keyEvents.Remove(项);
}
公共整数计数
{
得到
{
返回file.keyEvents.Count;
}
}
公共图书馆是只读的
{
得到
{
return((IList)file.keyEvents).IsReadOnly;
}
}
}
它应该很简单:
public IEnumerator GetEnumerator()
{
返回文件.keyEvents.GetEnumerator();
}
同时实现了IEnumerable
的和版本,因此您需要同时实现GetEnumerator的通用和非通用版本:
public IEnumerator<IKeyEvent> GetEnumerator()
{
return file.keyEvents.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() // explicit interface implementation
{
return file.keyEvents.GetEnumerator();
}
public IEnumerator GetEnumerator()
{
返回文件.keyEvents.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()//显式接口实现
{
返回文件.keyEvents.GetEnumerator();
}
能否为MIDI文件添加定义?