logo
CSharp_Prog_Guide

Свойства интерфейса

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

--

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

Пример

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

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

string IEmployee.Name

{

get { return "Employee Name"; }

set { }

}

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

string IEmployee.Name

{

get { return "Employee Name"; }

set { }

}

implements the Name property on the IEmployee interface, while the following declaration:

string ICitizen.Name

{

get { return "Citizen Name"; }

set { }

}

implements the Name property on the ICitizen interface.

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;

}

}

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

string ICitizen.Name

{

get { return "Citizen Name"; }

set { }

}

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

-------43

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

Sample Output

Enter number of employees: 210

Enter the name of the new employee: Hazem Abolrous

The employee information:

Employee number: 211

Employee name: Hazem Abolrous

----