Вопрос

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

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

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

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

Это было полезно?

Решение

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

Также обратите внимание, что если общий код относится к таким вещам, как аудит (кто/когда), вы также можете сделать это, переопределив DataContext's SubmitChanges метод и вызов GetChangeSet:

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top