Propiedades de interfaces (Guía de programación de C#)Interface Properties (C# Programming Guide)

Las propiedades se pueden declarar en una interfaz.Properties can be declared on an interface. A continuación se muestra un ejemplo de un descriptor de acceso de propiedad de interfaz:The following is an example of an interface property accessor:

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

El descriptor de acceso de una propiedad de interfaz no tiene un cuerpo.The accessor of an interface property does not have a body. Por tanto, el propósito de los descriptores de acceso es indicar si la propiedad es de lectura y escritura, de solo lectura o de solo escritura.Thus, the purpose of the accessors is to indicate whether the property is read-write, read-only, or write-only.

EjemploExample

En este ejemplo, la interfaz IEmployee tiene una propiedad de lectura y escritura, Name, y una propiedad de solo lectura, Counter.In this example, the interface IEmployee has a read-write property, Name, and a read-only property, Counter. La clase Employee implementa la interfaz IEmployee y usa estas dos propiedades.The class Employee implements the IEmployee interface and uses these two properties. El programa lee el nombre de un nuevo empleado y el número actual de empleados y muestra el nombre del empleado y el número de empleados calculado.The program reads the name of a new employee and the current number of employees and displays the employee name and the computed employee number.

Puede usar el nombre completo de la propiedad, que hace referencia a la interfaz en la que se declara el miembro.You could use the fully qualified name of the property, which references the interface in which the member is declared. Por ejemplo:For example:

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

Se denomina implementación de interfaz explícita.This is called Explicit Interface Implementation. Por ejemplo, si la clase Employee implementa dos interfaces ICitizen y IEmployee, y ambas interfaces tienen la propiedad Name, la implementación del miembro de interfaz explícita será necesaria.For example, if the class Employee is implementing two interfaces ICitizen and IEmployee and both interfaces have the Name property, the explicit interface member implementation will be necessary. Es decir, la siguiente declaración de propiedad:That is, the following property declaration:

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

implementa la propiedad Name en la interfaz IEmployee, mientras que la siguiente declaración:implements the Name property on the IEmployee interface, while the following declaration:

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

implementa la propiedad Name en la interfaz ICitizen.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 => _name;                
        set => _name = value;
    }

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

    // constructor
    public Employee() => _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 de ejemploSample 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

Vea tambiénSee also