Z ciekawości chciałbym wiedzieć, jak najlepiej wdrożyć klasy, które mogłyby zostać wykorzystane w celu uniknięcia ostrzeżenie CA1006Jak wdrożyć ogólne IEnumerable lub IDictionary, aby uniknąć CA1006?
CA1006: Microsoft.Design: Rozważmy projekt, w którym „IReader.Query (String, String) "nie zagnieżdża typu ogólnego" IList (Of IDictionary (Of String, Object)).
Jest to metoda, która zwraca typ rodzajowy
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();
}
}
Coś
SourceData<T, U> Query(string fullFileName, string sheetName)
SourceData Query(string fullFileName, string sheetName)
EDIT:
Po sugestii Marca ja zamknięty zagnieżdżona generycznych w tej klasie
public class QueryRow : List<KeyValuePair<string, object>>
{
protected internal QueryRow(IEnumerable<KeyValuePair<string, object>> dictionary)
{
this.AddRange(dictionary.Select(kvp => kvp));
}
}
jaka jest intencja listy słowników tutaj? to są wiersze z wartościami kluczowymi (tj. komórkami dostępnymi po nazwie kolumny)? –
każdy słownik jest wierszem gdzie każdy klucz jest nagłówkiem kolumny, a wartość jest wartością komórki – mrt181
W miejsce '.Cast' nie możesz użyć' .ToDictionary'? – IAbstract