/ / Czy mogę dodać wspólną funkcję do zestawu klas EntitySet <TEntity> - LINQ to SQL - c #, .net, linq-to-sql, inheritance

Czy mogę dodać wspólną funkcję do zestawu EntitySet <TEntity> Classes - LINQ do SQL - c #, .net, linq-sql, dziedziczenie

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 № 1

Utwó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.