Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Создание обобщенных интерфейсов
Создание обобщенных интерфейсов
Вы уже видели при рассмотрении пространства имен System.Collections. Generiс, что обобщенные интерфейсы в C# также допустимы (например, IEnumerable‹Т›). Вы, конечно, можете определить свои собственные обобщенные интерфейсы (как с ограничениями, так и без ограничений). Предположим, что нужно определить интерфейс, который сможет выполнять бинарные операции с параметрами обобщенного типа.
public interface IBinaryOperations‹T› {
T Add(T arg1, T arg2);
T Subtract(T arg1, T arg2);
T Multiply(T arg1, T arg2);
T Divide(T arg1, T arg2);
}
Известно, что интерфейсы остаются почти бесполезными, пока они не реализованы некоторым классом или структурой. При реализации обобщенного интерфейса поддерживающий его тип указывает тип заполнителя.
public class BasicMath: IBinaryOperations‹int› {
public int Add(int arg1, int arg2) { return arg1 + arg2; }
public int Subtract(int arg1, int arg2) { return arg1 – arg2; }
public int Multiply(int arg1, int arg2) { return arg1 * arg2; }
public int Divide(int arg1, int arg2) { return arg1 / arg2; }
}
После этого вы можете использовать BasicMath, как и ожидали.
static void Main(string[] args) {
Console.WriteLine("***** Обобщенные интерфейсы *****n");
BasicMath m = new BasicMath();
Console.WriteLine("1 + 1 = {0}", m.Add(1, 1));
Console.ReadLine();
}
Если вместо этого требуется создать класс BasicMath, действующий на числа с плавающим десятичным разделителем, можно конкретизировать параметр типа так.
public class BasicMath: IBinaryOperations‹double› {
public double Add(double arg1, double arg2) { return arg1 + arg2; }
…
}
Исходный код. Проект GenericInterface размещен в подкаталоге, соответствующем главе 10.
- Снова о создании объектных образов, восстановлении значений и System.Object
- Проблемы создания объектных образов и восстановления значений
- Пространство имен System.Collections.Generic
- Создание обобщенных методов
- Создание обобщенных структур (и классов)
- Создание пользовательских обобщенных коллекций
- Создание обобщенных базовых классов
- Создание обобщенных интерфейсов
- Создание обобщенных делегатов
- Резюме
- Создание обобщенных базовых классов
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD
- 4.2. Создание трехмерной модели и построение горизонтальной проекции детали
- 7.4.2. Создание собственного LiveCD
- Создание пользователя и группы на рабочей станции
- Создание корня документа:
- Создание многофайловой базы данных
- Создание форм с несколькими вкладками