У меня есть простая библиотека классов (служба COM +), написанная на C # для использования 5 веб-сервисов: Add, Minus, Divide, Multiply и Compare.
Я создал абстрактный продукт и классы абстрактной фабрики. Абстрактный продукт с именем WS-кода:
public abstract class WS
{
public abstract double Calculate(double a, double b);
public abstract string Compare(double a, double b);
}
Как вы видите, когда один из подклассов наследует WS, оба метода должны быть переопределены, что может быть бесполезно в некоторых подклассах. Например. Сравнить не требуется метод Calculate ().
Чтобы создать новый объект CompareWS, клиентский класс вызовет метод CreateWS (), который возвращает тип объекта WS.
public class CompareWSFactory : WSFactory
{
public override WS CreateWS()
{
return new CompareWS();
}
}
Но если Compare () не определено в WS, метод Compare () не может быть вызван. Это потому, что клиент будет использовать объект типа WS, а не объект CompareWS.
Это только пример с двумя методами, но что, если есть еще методы? Глупо ли определять все методы как абстрактные в классе WS?
У меня вопрос: я хочу определить абстрактные методы, которые являются общими для всех подклассов WS, тогда как, когда фабрика создает тип объекта WS, могут быть вызваны все методы подклассов (переопределенные методы WS, а также методы в подклассы). Как мне это сделать?