0

У меня есть абстрактный класс с именем PersonAbstract. Он имеет абстрактное свойство AgeПереписывание абстрактного метода в частичном классе

abstract public int Age { get; set; } 

Два класса называемые Customer и Employee расширить PersonAbstract.

Customer и Employee созданы с использованием Linq-to-SQL, поэтому у них есть сгенерированный автоматически код.

Автоматически созданный код для обоих из них:

public int Age 
{ 
    get 
    { 
     return this._age; 
    } 
    set 
    { 
     this._age = value; 
    } 
} 

добавить функциональность Employee и Customer с помощью частичного класса.

public partial class Employee: PersonAbstract 
{ 
..... 

Как изменить эту структуру, так что наследуемые классы (Employee и Customer) имеют свое лицо свойство переопределении в лицо собственности в абстрактном классе, не прикасаясь автоматически сгенерированный код?

Edit:

Вопрос заключается в том, что я хочу, чтобы оба класса разделяют код некоторого родительского класса. Поэтому я пытался добавить абстрактный класс с общим кодом между интерфейсом, который реализует, который имеет свойство Age и два дочерних класса. Но этот код нуждается в доступе к свойству Age. Таким образом, абстрактный класс должен реализовать интерфейс, используя абстрактные экземпляры свойства Age, и дочерние классы переопределяют это. Если это невозможно, как еще я могу достичь желаемого результата?

ответ

5

Вы не можете - автогенерированный код не использует override, поэтому он не может переопределить существующий элемент.

Если вы поместили свойство age в интерфейс , то тогда автоматически сгенерированный код с радостью реализует интерфейс для вас.

+0

Спасибо, это уже в интерфейсе. Проблема в том, что я хочу, чтобы оба класса совместно использовали код родительского класса. Поэтому я пытался добавить абстрактный класс между интерфейсом и двумя дочерними классами. Но этот код нуждается в доступе к свойству Age. Таким образом, абстрактный класс должен реализовать интерфейс, используя абстрактные экземпляры свойства Age, и дочерние классы переопределяют это. Как еще я могу это достичь? – Barka

+0

@ user277498: Это довольно ужасно, но вы можете сделать абстрактный класс * cast * 'this' для типа интерфейса, когда вам нужно было использовать его члены, а затем сделать частичный класс от абстрактного класса и реализовать интерфейс. Конструктор может проверить, что 'this' действительно реализует интерфейс и генерирует исключение, если нет. Он чувствует, что должен быть лучший способ ... вы изучили все варианты в дизайнере, чтобы сообщить генератору кода о базовом классе и добавить переопределения? –

+0

Да, для каждого свойства у дизайнера есть InheritanceModifier, который можно установить для переопределения. Кажется, это работает. Благодаря! – Barka

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