Używam LINQ to SQL
i chcesz dodać funkcje do generowanych automatycznie EntitySet< TEntity >
kolekcje.
na przykład.
City.Houses
gdzie Houses
jest generowany automatycznie EntitySet < House >
Używam metody rozszerzenia, aby dodać funkcję wyodrębniania do pliku EntitySet < House >
klasa
żebym mógł dostać coś takiego
City.House.FindByID(id);
ale teraz też mam
City.Bunglows.FindByID(id);
teraz FindByID
zasadniczo robi to samo dla obu tych klas.
Czy będę musiał przedłużyć Bunglows
również i ponownie zaimplementuj tę samą funkcję. Nie mogę zrobić jakiegoś dziedziczenia na automatycznie generowanym pliku EntitySet< TEntity >
zajęcia ??
Komentując odpowiedź Andrew Hare'a
Ale to sprawi, że FindByID () będzie dostępne dla wszystkich klas EntitySet <TEntity>. Co jeśli chcę zaimplementować tę funkcję tylko na tych 2 konkretnych zestawach encji?
Odpowiedzi:
1 dla odpowiedzi № 1Utwórz ogólną metodę rozszerzenia w następujący sposób:
public static TEntity FindByID<TEntity>
(this EntitySet<TEntity> source, Int32 id)
{
// ...
}
Umożliwi to użycie tej metody rozszerzenia na każdym zamkniętym, skonstruowanym wystąpieniu EntitySet<TEntity>
(to znaczy. EntitySet<House>
lub EntitySet<Bungalow>
) tak długo, jak Twoja implementacja FindByID
można odpowiednio wyrazić ogólnikowo.