Dlaczego otrzymuję „błąd:… musi być typem odniesienia” w mojej ogólnej metodzie C #?
W różnych tabelach bazy danych mam zarówno kolumnę właściwości, jak i kolumnę wartości. Używam Linq do SQL, aby uzyskać dostęp do bazy danych.
Piszę metodę, która zwraca słownik zawierający właściwości / wartości pobrane z danej tabeli bazy danych:
private static Dictionary<string, string> GetProperties<T>(Table<T> table)
{
Dictionary<string, string> properties = new Dictionary<string, string>();
foreach (var row in table)
{
properties[row.Property]=row.Value;
}
return properties;
}
Po kompilacji otrzymuję:
Error 1 The type 'T' must be a reference type in order to use it as parameter 'TEntity' in the generic type or method 'System.Data.Linq.Table<TEntity>'
Próbowałem wyszukać ten komunikat o błędzie bez szczęścia.
Wyszukiwanie w StackOverflow to pytanie wydaje się podobne, chociaż w odniesieniu do listy parametrów:Lista rodzajowa <T> jako parametr metody - chociaż parametr nadal nie jest typem odniesienia w odpowiedziach na to pytanie.
Czytanie przewodnika programowania C # w MSDN:http://msdn.microsoft.com/en-us/library/twcad0zb(VS.80).aspx Widzę ich przykłady wszystkie przekazują parametry przez odniesienie. Jednak w moim szczególnym przypadku nie widzę, jak przekazywać referencje, ponieważ typ ogólny służy tylko do określania ogólnego typu tabeli.
Wszelkie wskazówki byłyby bardzo mile widziane.
PS: Appologies, jeśli zaakceptowanie odpowiedzi wymaga czasu, ponieważ ta funkcja jest obecnie niedostępna (jestem ślepy i korzystam z czytnika ekranu).