У меня есть абстрактный класс с именем 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
, и дочерние классы переопределяют это. Если это невозможно, как еще я могу достичь желаемого результата?
Спасибо, это уже в интерфейсе. Проблема в том, что я хочу, чтобы оба класса совместно использовали код родительского класса. Поэтому я пытался добавить абстрактный класс между интерфейсом и двумя дочерними классами. Но этот код нуждается в доступе к свойству Age. Таким образом, абстрактный класс должен реализовать интерфейс, используя абстрактные экземпляры свойства Age, и дочерние классы переопределяют это. Как еще я могу это достичь? – Barka
@ user277498: Это довольно ужасно, но вы можете сделать абстрактный класс * cast * 'this' для типа интерфейса, когда вам нужно было использовать его члены, а затем сделать частичный класс от абстрактного класса и реализовать интерфейс. Конструктор может проверить, что 'this' действительно реализует интерфейс и генерирует исключение, если нет. Он чувствует, что должен быть лучший способ ... вы изучили все варианты в дизайнере, чтобы сообщить генератору кода о базовом классе и добавить переопределения? –
Да, для каждого свойства у дизайнера есть InheritanceModifier, который можно установить для переопределения. Кажется, это работает. Благодаря! – Barka