Могу ли я добавить общую функцию к набору классов EntitySet <TEntity>- LINQ to SQL - PullRequest
0 голосов
/ 21 января 2010

Я использую LINQ to SQL

и хотите добавить функции к автоматически сгенерированным EntitySet< TEntity > коллекциям.

например.

City.Houses

, где Houses генерируется автоматически EntitySet < House >

Я использую метод расширения для добавления функции извлечения в класс EntitySet < House >

чтобы я мог получить что-то вроде

City.House.FindByID(id);

но теперь у меня также есть

City.Bunglows.FindByID(id);

сейчас FindByID в основном делает одно и то же для обоих этих классов.

Придется ли мне также расширять Bunglows и снова реализовать ту же функцию. Разве я не могу сделать какое-то наследование для автоматически сгенерированных EntitySet< TEntity > классов ??

Комментируя ответ Эндрю Хара

Но это сделает FindByID () доступным для всех классов EntitySet . Что если я захочу реализовать эту функцию только на этих двух конкретных наборах сущностей ???

1 Ответ

1 голос
/ 21 января 2010

Сделайте ваш метод расширения общим:

public static TEntity FindByID<TEntity>
    (this EntitySet<TEntity> source, Int32 id)
{
    // ...
}

Это позволит вам использовать этот метод расширения для любого закрытого составного экземпляра EntitySet<TEntity> (т.е. EntitySet<House> или EntitySet<Bungalow>), если ваша реализация FindByID может быть соответствующим образом выражена в общем виде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...