Sei sulla pagina 1di 4

Nombre: Rosado Gutirrez Andrs

Curso: S3J
Tutorial de implementacin explcita de interfaces
Una clase que implementa una interfaz puede implementar explcitamente
un miembro de esa interfaz. Cuando un miembro se implementa
explcitamente, no es posible obtener acceso a l por medio de una
instancia de clase, sino slo a travs de una instancia de la interfaz. Este
tutorial contiene dos ejemplos. El primer ejemplo ilustra cmo implementar
explcitamente miembros de interfaz y obtener acceso a ellos. El segundo
ejemplo muestra cmo implementar dos interfaces que presentan los
mismos nombres de miembro.
Ejemplo 1
Este ejemplo declara una interfaz IDimensions y una clase Box, la cual
implementa explcitamente los miembros de la interfaz Length y Width. El
acceso a los miembros se realiza a travs de la instancia de
interfaz myDimensions.
// explicit1.cs
interface IDimensions
{
float Length();
float Width();
}
class Box : IDimensions
{
float lengthInches;
float widthInches;
public Box(float length, float width)
{
lengthInches = length;
widthInches = width;
}
// Explicit interface member implementation:
float IDimensions.Length()
{
return lengthInches;
}
// Explicit interface member implementation:
float IDimensions.Width()
{
return widthInches;
}
public static void Main()
{
// Declare a class instance "myBox":
Box myBox = new Box(30.0f, 20.0f);
// Declare an interface instance "myDimensions":
IDimensions myDimensions = (IDimensions) myBox;
// Print out the dimensions of the box:
/* The following commented lines would produce compilation
errors because they try to access an explicitly implemented
interface member from a class instance:
*/
//System.Console.WriteLine("Length: {0}", myBox.Length());
//System.Console.WriteLine("Width: {0}", myBox.Width());
/* Print out the dimensions of the box by calling the methods
from an instance of the interface:
*/
System.Console.WriteLine("Length: {0}", myDimensions.Length());

Nombre: Rosado Gutirrez Andrs


Curso: S3J
System.Console.WriteLine("Width: {0}", myDimensions.Width());
}

IMPLEMTAR ATRIBUTOS EN C#
Los atributos constituyen un medio apropiado para asociar informacin
declarativa con cdigo de C# (tipos, mtodos, propiedades, etc.). Una vez
asociado con una entidad del programa, el atributo se puede consultar en
tiempo de ejecucin y utilizar de varias formas.
Entre los ejemplos de uso de atributos, se incluyen:

Asociar la documentacin con entidades de programa (por medio de


un atributo Help).

Asociar editores de valor con un tipo especfico en una plataforma de


interfaz de usuario (mediante un atributo ValueEditor).

Declarar una clase Attribute


Declarar un atributo en C# es simple: se utiliza la forma de una declaracin
de clase que hereda de System.Attribute y que se ha marcado con el
atributo AttributeUsage, como se indica a continuacin:

Nombre: Rosado Gutirrez Andrs


Curso: S3J
IMPLEMENTAR UN METODO EN C#
Para definir y llamar al mtodo de extensin
1. Defina una clase esttica que contenga el mtodo de extensin.
La clase debe estar visible para el cdigo cliente. Para obtener ms
informacin sobre las reglas de accesibilidad, vea Modificadores de
acceso (Gua de programacin de C#).
2. Implemente el mtodo de extensin como mtodo esttico que tenga
al menos la misma visibilidad que la clase contenedora.
3. El primer parmetro del mtodo especifica el tipo en el que funciona
el mtodo; debe estar precedido del modificador this.
4. En el cdigo de llamada, agregue una directiva using para especificar
el espacio de nombres que contiene la clase del mtodo de extensin.
5. Llame a los mtodos como si fueran mtodos de instancia en el tipo.
Observe que el cdigo de llamada no especifica el primer parmetro
porque ste representa el tipo en el que se aplica el operador y el
compilador ya conoce el tipo del objeto. Slo tiene que proporcionar
argumentos para segundos parmetros a travs de n.

Ejemplo
En el ejemplo siguiente se implementa un mtodo de extensin
denominado WordCount en la clase CustomExtensions.StringExtension. El
mtodo funciona en la claseString, que se especifica como primer
parmetro de mtodo. El espacio de nombres CustomExtensions se importa
al espacio de nombres de la aplicacin y se llama al mtodo desde el
mtodo Main.

Nombre: Rosado Gutirrez Andrs


Curso: S3J

Potrebbero piacerti anche