Свойства интерфейса (Руководство по программированию на C#)

Свойства можно объявлять в interface (Справочник по C#). Ниже приведен пример метода доступа индексатора интерфейса:

public interface ISampleInterface
{
    // Property declaration: 
    string Name
    {
        get;
        set;
    }
}

Метод доступа свойства интерфейса не имеет тела. Поэтому методы доступа предназначены для того, чтобы указывать, доступно ли свойство для чтения и записи, только для чтения или только для записи.

Пример

В этом примере интерфейс IEmployee имеет свойство с доступом записи/чтения, Name, а также свойство только для чтения Counter. Класс Employee реализует интерфейс IEmployee и использует эти два свойства. Программа считывает имя нового сотрудника и текущее количество сотрудников и выводит имя сотрудника и его вычисленный номер.

Можно использовать полное имя свойства, которое ссылается на интерфейс, в котором объявлен член. Примеры.

string IEmployee.Name
{
    get { return "Employee Name"; }
    set { }
}

Это называется Явная реализация интерфейса (Руководство по программированию в C#). Например, если класс Employee реализует два интерфейса ICitizen и IEmployee, и оба интерфейса имеют свойство Name, то обязательна явная реализация члена интерфейса. То есть, следующее объявление свойства.

string IEmployee.Name
{
    get { return "Employee Name"; }
    set { }
}

реализует свойство Name для интерфейса IEmployee, а следующее объявление:

string ICitizen.Name
{
    get { return "Citizen Name"; }
    set { }
}

реализует свойство Name в интерфейсе ICitizen.

interface IEmployee
{
    string Name
    {
        get;
        set;
    }

    int Counter
    {
        get;
    }
}

public class Employee : IEmployee
{
    public static int numberOfEmployees;

    private string name;
    public string Name  // read-write instance property
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }

    private int counter;
    public int Counter  // read-only instance property
    {
        get
        {
            return counter;
        }
    }

    public Employee()  // constructor
    {
        counter = ++counter + numberOfEmployees;
    }
}

class TestEmployee
{
    static void Main()
    {
        System.Console.Write("Enter number of employees: ");
        Employee.numberOfEmployees = int.Parse(System.Console.ReadLine());

        Employee e1 = new Employee();
        System.Console.Write("Enter the name of the new employee: ");
        e1.Name = System.Console.ReadLine();

        System.Console.WriteLine("The employee information:");
        System.Console.WriteLine("Employee number: {0}", e1.Counter);
        System.Console.WriteLine("Employee name: {0}", e1.Name);
    }
}
  210
Hazem Abolrous

Пример результатов выполнения

Enter number of employees: 210

Enter the name of the new employee: Hazem Abolrous

The employee information:

Employee number: 211

Employee name: Hazem Abolrous

См. также

Ссылки

Свойства (Руководство по программированию в C#)

Использование свойств (Руководство по программированию в C#)

Сравнение свойств и индексаторов (Руководство по программированию в C#)

Индексаторы (Руководство по программированию в C#)

Интерфейсы (Руководство по программированию в C#)

Основные понятия

Руководство по программированию на C#