Vlastnosti rozhraní (Průvodce programováním v C#)

Vlastnosti lze deklarovat v rozhraní. Následující příklad deklaruje přístupové objekty vlastnosti rozhraní:

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

Vlastnosti rozhraní obvykle nemají tělo. Přístupové objekty označují, zda je vlastnost jen pro čtení, jen pro čtení nebo jen pro zápis. Na rozdíl od tříd a struktur deklarování přístupových objektů bez těla deklaruje automaticky implementovanou vlastnost. Rozhraní může definovat výchozí implementaci členů, včetně vlastností. Definování výchozí implementace vlastnosti v rozhraní je vzácné, protože rozhraní nemusí definovat datová pole instance.

Příklad

V tomto příkladu má rozhraní IEmployee vlastnost Namepro čtení i zápis a vlastnost jen pro čtení , Counter. Třída Employee implementuje IEmployee rozhraní a používá tyto dvě vlastnosti. Program přečte jméno nového zaměstnance a aktuální počet zaměstnanců a zobrazí jméno zaměstnance a vypočítané číslo zaměstnance.

Můžete použít plně kvalifikovaný název vlastnosti, která odkazuje na rozhraní, ve kterém je člen deklarován. Příklad:

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

Předchozí příklad ukazuje explicitní implementaci rozhraní. Pokud například třída Employee implementuje dvě rozhraní a IEmployee obě rozhraní ICitizen mají Name vlastnost, bude nutná explicitní implementace člena rozhraní. To znamená, že následující deklarace vlastnosti:

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

implementuje Name vlastnost v IEmployee rozhraní, zatímco následující deklarace:

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

implementuje Name vlastnost v ICitizen rozhraní.

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 => _name;
        set => _name = value;
    }

    private int _counter;
    public int Counter  // read-only instance property
    {
        get => _counter;
    }

    // constructor
    public Employee() => _counter = ++numberOfEmployees;
}
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);

Ukázkový výstup

Enter number of employees: 210
Enter the name of the new employee: Hazem Abolrous
The employee information:
Employee number: 211
Employee name: Hazem Abolrous

Viz také