Proprietà dell'interfaccia (Guida per programmatori C#)

Le proprietà possono essere dichiarate su una interface (Riferimenti per C#). Nell'esempio seguente viene illustrata la funzione di accesso di un indicizzatore di interfaccia:

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

La funzione di accesso di una proprietà di interfaccia non include un corpo. Lo scopo delle funzioni di accesso è quindi di indicare se la proprietà è in lettura/scrittura, in sola scrittura o in sola lettura.

Esempio

Nell'esempio che segue l'interfaccia IEmployee è associata a una proprietà di lettura/scrittura, Name, e a una proprietà in sola lettura, Counter. La classe Employee implementa l'interfaccia IEmployee e utilizza le due proprietà. Il programma legge il nome di un nuovo dipendente e il numero corrente di dipendenti, quindi visualizza il nome del dipendente e il relativo numero calcolato.

È possibile utilizzare il nome completo della proprietà, che fa riferimento all'interfaccia in cui il membro è dichiarato. Ad esempio:

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

Questo meccanismo è denominato Implementazione esplicita dell'interfaccia (Guida per programmatori C#). Se la classe Employee, ad esempio, implementa due interfacce, ICitizen e IEmployee, ed entrambe le interfacce sono associate alla proprietà Name, sarà necessaria l'implementazione esplicita del membro di interfaccia. Pertanto, la dichiarazione di proprietà

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

implementa la proprietà Name nell'interfaccia IEmployee, mentre la dichiarazione

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

implementa la proprietà Name nell'interfaccia 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

Output di esempio

Enter number of employees: 210

Enter the name of the new employee: Hazem Abolrous

The employee information:

Employee number: 211

Employee name: Hazem Abolrous

Vedere anche

Riferimenti

Proprietà (Guida per programmatori C#)

Utilizzo delle proprietà (Guida per programmatori C#)

Confronto tra proprietà e indicizzatori (Guida per programmatori C#)

Indicizzatori (Guida per programmatori C#)

Interfacce (Guida per programmatori C#)

Concetti

Guida per programmatori C#