Будут ли функции, которые вы добавляете, изменить определение того, что представляет собой класс, или вы просто будете создавать функции для управления данными, которые уже являются частью класса?
Если вам нужно переопределить аспекты базового класса этих двух классов, то да, вам нужно будет изменить структуру наследования. Но если функции будут просто манипулировать данными, которые уже являются частью класса, то я бы предложил вам использовать интерфейс и создать служебные функции.
Вот неуклюжий пример того, что я имею в виду:
using System;
abstract class Pet { }
class Dog : Pet, IPet
{
public String Name { get; set; }
public Int32 Age { get; set; }
}
class Cat : Pet, IPet
{
public String Name { get; set; }
public Int32 Age { get; set; }
}
interface IPet
{
String Name { get; set; }
Int32 Age { get; set; }
}
static class PetUtils
{
public static void Print(this IPet pet)
{
Console.WriteLine(pet.Name + " is " + pet.Age);
}
}
Ваши два класса пользовательского интерфейса, возможно, связаны таким образом. Я бы предположил, что то, что вам нужно сделать сквозным способом, будет решаться с помощью утилиты, подобной той, которую я создал. Я создал метод PetUtils.Print
как метод расширения, так как это создаст выразительную иллюзию метода экземпляра. Если вы не используете C# 3, просто удалите «this
» от public static void Print(this IPet pet)
.