通用接口,IEnumerable

时间:2011-09-27 18:33:31

标签: c# interface ienumerable

我有以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace QQQ.Mappings
{
    interface IExcess<T>
    {
        IEnumerable<string, T> getExcessByMaterialGroup(T[] data);
        void Sort<TKey>(T[] data, Func<T, TKey> selector);
    }
}

但我收到此错误,“使用泛型类型'System.Collections.Generic.IEnumerable'需要'1'类型参数”

7 个答案:

答案 0 :(得分:7)

没有标准的IEnumerable<T, K>泛型类型界面,只有IEnumerable<T>MSDN)。 我相信您需要IDictionary<string, T>MSDN)而不是

答案 1 :(得分:1)

IEnumerable<T>是唯一没有IEnumerable<T,T>的方法,但您可以使用IDictionary<T,T>

答案 2 :(得分:1)

这是你的问题,IEnumerable只有一个通用参数。

IEnumerable<string, T>

你到底想要完成什么?

答案 3 :(得分:1)

IEnumerable只接受单个类型的参数。您应该将其声明为IEnumerable<T>

答案 4 :(得分:1)

IEnumerable只有一个类型参数,但你指定了两个(string,T)。你可能想要这样的东西:

IEnumerable<string> getExcessByMaterialGroup(T[] data);

如果该方法应该返回一个可枚举的字符串。

答案 5 :(得分:1)

您正在尝试从getExcessByMaterialGroup返回IEnumerable<string, T>IEnumerable<T>只接受一个类型参数,而不是两个(String和T)。我的猜测是你要返回IEnumerable<KeyValuePair<String, T>>

之类的东西

答案 6 :(得分:1)

IEnumerable<T>存在,没有双字典样式IEnumerable<T, U>

如果您正在寻找类似KeyValue的关系,请考虑IEnumerable<KeyValuePair<string, T>>