Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解决该错误;类名不为';t实现接口“u name”吗;?_C#_.net - Fatal编程技术网

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文件添加定义?