Как реализовать универсальный IEnumerable или IDictionary, чтобы избежать CA1006?

Из любопытства я хотел бы знать, как лучше всего реализовать класс, который можно было бы использовать, чтобы избежать предупреждения CA1006

CA1006: Microsoft.Design: Рассмотрим дизайн, в котором IReader.Query (String, String) не содержит универсальный тип IList (Of IDictionary (Of String, Object)).

Это метод, который возвращает универсальный тип

public virtual IList<IDictionary<string, object>> Query(
    string fullFileName, 
    string sheetName)
{
    using (var connection = new OdbcConnection(
        this.GetOdbcConnectionString(fullFileName)))
    {
        connection.Open();
        return connection
            .Query(string.Format(
                CultureInfo.InvariantCulture,
                SystemResources.ExcelReader_Query_select_top_128___from__0_,
                sheetName))
            .Cast<IDictionary<string, object>>()
            .ToList();
    }
}

Что-то вроде

SourceData<T, U> Query(string fullFileName, string sheetName)
SourceData Query(string fullFileName, string sheetName)

EDIT:

Следуя предложениям Марка, я инкапсулировал вложенный универсальный тип в этот класс

public class QueryRow : List<KeyValuePair<string, object>>
{
    protected internal QueryRow(IEnumerable<KeyValuePair<string, object>> dictionary)
    {
        this.AddRange(dictionary.Select(kvp => kvp));
    }
}
9
задан mrt181 16 November 2011 в 16:57
поделиться