Propriétés d'interface (Guide de programmation C#)

Mise à jour : novembre 2007

Les propriétés peuvent être déclarées sur une interface (Référence C#). Exemple d'accesseur d'indexeur d'interface :

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

L'accesseur d'une propriété d'interface ne possède pas de corps. Ainsi, les accesseurs ont pour objet d'indiquer si la propriété est en lecture-écriture, en écriture seule ou en lecture seule.

Exemple

Dans cet exemple, l'interface IEmployee possède une propriété en lecture-écriture, Name, et une propriété en lecture seule, Counter. La classe Employee implémente l'interface IEmployee et utilise ces deux propriétés. Le programme lit le nom d'un nouvel employé et le nombre actuel d'employés, puis affiche le nom de l'employé et le nombre d'employés calculé.

Vous pourriez utiliser le nom complet de la propriété, qui fait référence à l'interface dans laquelle le membre est déclaré. Par exemple :

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

C'est ce qu'on appelle Implémentation d'interface explicite (Guide de programmation C#). Par exemple, si la classe Employee implémente deux interfaces ICitizen et IEmployee, et que ces deux interfaces possèdent la propriété Name, l'implémentation explicite des membres d'interface est nécessaire. Ainsi, la déclaration de propriété suivante :

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

implémente la propriété Name sur l'interface IEmployee, tandis que la déclaration :

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

implémente la propriété Name sur l'interface 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

Résultat de l'exemple

Enter number of employees: 210

Enter the name of the new employee: Hazem Abolrous

The employee information:

Employee number: 211

Employee name: Hazem Abolrous

Voir aussi

Concepts

Guide de programmation C#

Référence

Propriétés (Guide de programmation C#)

Utilisation de propriétés (Guide de programmation C#)

Comparaison entre propriétés et indexeurs (Guide de programmation C#)

Indexeurs (Guide de programmation C#)

Interfaces (Guide de programmation C#)