Propiedades de interfaces (Guía de programación de C#)

Actualización: noviembre 2007

Las propiedades se pueden declarar en una interface (Referencia de C#). A continuación se muestra un ejemplo de descriptor de acceso de un indizador de interfaz:

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

Un identificador de acceso de una propiedad de interfaz no tiene cuerpo. Así, el propósito de los descriptores de acceso es indicar si la propiedad es de lectura y escritura, de sólo lectura o de sólo escritura.

Ejemplo

En este ejemplo, la interfaz IEmployee tiene una propiedad de lectura y escritura, Name, y una propiedad de sólo lectura, Counter. La clase Employee implementa la interfaz IEmployee y utiliza las dos propiedades. El programa lee el nombre de un empleado nuevo y el número actual de empleados, y muestra como resultado el nombre del empleado y el nuevo número de empleados calculado.

Se podría utilizar el nombre completo de la propiedad, que hace referencia a la interfaz en la que se declara el miembro. Por ejemplo:

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

Esto se denomina Implementación explícita de interfaz (Guía de programación de C#). Por ejemplo, si la clase Employee implementa dos interfaces ICitizen y IEmployee, y ambas tienen la propiedad Name, será necesario implementar explícitamente el miembro de interfaz. Es decir, la siguiente declaración de propiedad:

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

implementa la propiedad Name en la interfaz IEmployee, mientras que la declaración:

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

implementa la propiedad Name en la interfaz 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

Resultados del ejemplo

Enter number of employees: 210

Enter the name of the new employee: Hazem Abolrous

The employee information:

Employee number: 211

Employee name: Hazem Abolrous

Vea también

Conceptos

Guía de programación de C#

Referencia

Propiedades (Guía de programación de C#)

Utilizar propiedades (Guía de programación de C#)

Comparación entre propiedades e indizadores (Guía de programación de C#)

Indizadores (Guía de programación de C#)

Interfaces (Guía de programación de C#)