好奇心から、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)
編集:
マークの提案に従って、ネストされたジェネリックをこのクラスにカプセル化しました
public class QueryRow : List<KeyValuePair<string, object>>
{
protected internal QueryRow(IEnumerable<KeyValuePair<string, object>> dictionary)
{
this.AddRange(dictionary.Select(kvp => kvp));
}
}