Общий интерфейс, IEnumerable - PullRequest
0 голосов
/ 27 сентября 2011

У меня есть следующий код:

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 ]

7 голосов
/ 27 сентября 2011

Нет стандартного IEnumerable<T, K> интерфейса универсального типа, только IEnumerable<T> ( MSDN ). Я считаю, что вам нужно IDictionary<string, T> ( MSDN ) вместо

1 голос
/ 27 сентября 2011

IEnumerable<T> существует, двойного словарного стиля нет IEnumerable<T, U>.

Если вы ищете отношения типа KeyValue, рассмотрите IEnumerable<KeyValuePair<string, T>>

1 голос
/ 27 сентября 2011

Вы пытаетесь вернуть IEnumerable<string, T> из getExcessByMaterialGroup.IEnumerable<T> принимает только один тип параметра, а не два (String и T).Я думаю, что вы хотите вернуть что-то вроде IEnumerable<KeyValuePair<String, T>>

1 голос
/ 27 сентября 2011

IEnumerable имеет только один аргумент типа, но вы указали два (строка, T). Вы, вероятно, хотите что-то вроде:

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

если метод должен возвращать перечисляемое количество строк.

1 голос
/ 27 сентября 2011

IEnumerable принимает только один аргумент типа.Вы должны объявить это как IEnumerable<T>.

1 голос
/ 27 сентября 2011

Это ваша проблема, IEnumerable имеет только 1 универсальный аргумент.

IEnumerable<string, T>

Что именно вы пытаетесь достичь?

1 голос
/ 27 сентября 2011

IEnumerable<T> - единственный метод, которого нет IEnumerable<T,T>, но вы можете использовать IDictionary<T,T>

...