Еще одна мощная функция С# — возможность комбинирования двух или более интерфейсов, и в итоге класс должен реализовать только результат комбинирования. Пусть вы хотите создать новый класс
TreeView,
реализующий оба интерфейса:
IDragDrop
и
ISortable.
Поскольку резонно предполагать, что и другим элементам управления, таким как
ListView
и
ListBox,
понадобится скомбинировать эти функции вам, возможно, захочется скомбинировать интерфейсы
IDragDrop
и
using System;
public class Control
{
}
public interface IDragDrop {
void DragQ; void Drop(); }
public interface ISerializable
{
void SerlalizeO;
}
public interface ICombo : IDragDrop, ISerializable
{
// Этот интерфейс не дает ничего нового // (что касается поведения), так как единственное его // назначение - скомбинировать интерфейсы IDragDrop // и ISerializable в единый интерфейс.
}
public class MyTreeView : Control, ICombo
{
public void DragQ
{
Console.WriteLineC'MyTreeView.Drag called");
}
public void Drop()
{
Console.WriteLineC'MyTreeView. Drop called");
>
public void Serialize()
{
Console.WriteLineC'MyTreeView.Serialize called");
} }
class CombiningApp
{
public static void MainQ
{
MyTreeView tree = new MyTreeViewO;
tree.DragO; tree.DropQ; tree.SerializeO; }
Комбинируя интерфейсы, вы не только упростите возможность агрегирования семантически связанных интерфейсов в единый интерфейс, но при необходимости сможете добавлять к новому "композитному" интерфейсу дополнительные методы.