将foreach暴露在包含字典的类中

时间:2013-10-08 15:39:00

标签: c# dictionary foreach

class C_SQLSerResLibrary: IEnumerable<KeyValuePair<C_SQLServer, String>>
{
    private Dictionary<C_SQLServer, String> m_dicSQLResLibrary;
    // ...
    public IEnumerator<KeyValuePair<CSQLServer, String>> GetEnumerator()
    {
        return(IEnumerator<KeyValuePair, String>>) m_dicSQLResLibrary. GetEnumerator();
    }
    // ... 
 }

我试图以只读的方式在字典上公开foreach。

目前我收到错误CS0738告诉我该类没有实现接口成员System.Collections.IEnumerable.GetEnumerator()返回类型不匹配。

1 个答案:

答案 0 :(得分:4)

IEnumerable<T>实现IEnumerable非通用接口。它也有IEnumerator GetEnumerator()方法,你也要实现它以便编译。

试试这个

class C_SQLSerResLibrary: IEnumerable<KeyValuePair<C_SQLServer, String>>
{
    private Dictionary<C_SQLServer, String> m_dicSQLResLibrary;
    public IEnumerator<KeyValuePair<CSQLServer, String>> GetEnumerator()
    {
        return m_dicSQLResLibrary.GetEnumerator();
    }
    IEnumerator IEnumerable.GetEnumerator()//you missed this
    {
        return this.GetEnumerator();
    }
 }