1

Я создаю абстрактный класс, который может быть унаследован в частичном классе класса LINQ to SQL. Класс LINQ to SQL содержит кучу встроенных частичных методов. Есть ли способ, которым я могу реализовать один или несколько частичных методов в абстрактном классе? Я знаю, что частичные методы могут содержаться только в частичных классах или структурах. Я уверен, что есть еще один способ сделать это.Частичный метод внутри абстрактного класса (C#)

Вот более подробно:

  • I может иметь таблицу базы данных под названием News. Если я создаю файл dbml LINQ to SQL, содержащий эту таблицу, автоматически генерируемый код генерирует частичный класс для News.
  • Этот частичный класс содержит несколько частичных методов.
  • У меня есть класс, который я создаю, который содержит несколько методов, которые я хотел бы использовать во всех моих классах LINQ to SQL.
  • Один из этих методов - это частичный метод, добавленный к каждому классу LINQ to SQL. У меня есть общий орган, который можно использовать для этого метода. Вместо того, чтобы добавлять этот метод к каждому частичному классу, я ищу способ его создать один раз и наследовать его с помощью наследования базового класса.

Надеюсь, что поможет объяснить больше.

ответ

1

Частичные методы не применимы по наследованию. Вы можете добавить обычные методы в абстрактный базовый класс, но они не будут автоматически «париться» с объявлениями частичного метода. Итак: нет. Конечно, вы можете просто вызвать вызов метода частичного метода в базовый класс.

Заметим также, что если общий код относится к вещам, как аудит (кто/когда), вы также можете сделать это с помощью переопределения SubmitChanges СПОСОБА DataContext «s, и называя GetChangeSet:

public override void SubmitChanges(ConflictMode failureMode) 
    { 
     ChangeSet delta = GetChangeSet(); 
     //... use delta.Updates, delta.Inserts and delta.Deletes 
     base.SubmitChanges(failureMode); 
    } 

Наконец, к сведению что вы также можете указать общий базовый класс для всех ваших объектов в dbml (like so); вам не нужно делать это вручную в каждом частичном классе.

0

Я думаю, что понимаю, что вы хотите сделать, но если нет, то дайте мне знать. Вы можете сделать свой абстрактный базовый класс частичным и вытащить реализацию, которую вы хотите, в этот класс. Кроме того, вы можете взять свой абстрактный класс и инкапсулировать функциональность, к которой вы хотите иметь дочерние классы.

 Смежные вопросы

  • Нет связанных вопросов^_^