Clases Rfl, Deleg, Even, Herencia

download Clases Rfl, Deleg, Even, Herencia

of 3

Transcript of Clases Rfl, Deleg, Even, Herencia

Eventos y delegadosUn evento es un mensaje que enva un objeto cuando ocurre una accin. La accin puede estar causada por la interaccin del usuario, como un clic, o por otra lgica del programa. El objeto que provoca el evento se conoce como remitente del evento. El objeto que captura el evento y responde a l se denomina receptor del evento.En las comunicaciones de eventos, el remitente del evento no sabe qu objeto o mtodo recibir los eventos que provoca. Se necesita un intermediario (o mecanismo de tipo puntero) entre el origen y el receptor. .NET Framework define un tipo especial (Delegado) que proporciona la funcionalidad de un puntero a funcin.Un delegado es una clase que puede guardar una referencia a un mtodo. A diferencia de otras clases, una clase de delegado tiene un prototipo y puede guardar referencias nicamente a los mtodos que coinciden con su prototipo. Por lo tanto, un delegado equivale a un puntero a funcin con seguridad o a una devolucin de llamada. Aunque los delegados tienen otros usos, esta explicacin se centra en la funcionalidad de control de eventos de los delegados. Una declaracin de delegado es suficiente para definir una clase de delegado. La declaracin proporciona el prototipo del delegado y Common Language Runtime proporciona la implementacin. En el siguiente ejemplo se muestra la declaracin de un delegado de eventos.C#VBpublic delegate void AlarmEventHandler(object sender, AlarmEventArgs e);

La sintaxis es similar a la de la declaracin de un mtodo; no obstante, la palabra clavedelegateindica al compilador queAlarmEventHandleres un tipo de delegado. Por convencin, los delegados de evento de .NET Framework tienen dos parmetros, el origen que provoc el evento y los datos del evento.Una instancia del delegadoAlarmEventHandlerpuede enlazarse a cualquier mtodo que coincida con su prototipo, como el mtodoAlarmRangde la claseWakeMeUp, como se muestra en el siguiente ejemplo.C#VBpublic class WakeMeUp { // AlarmRang has the same signature as AlarmEventHandler. public void AlarmRang(object sender, AlarmEventArgs e) {...}; ...}Los delegados de evento personalizados slo son necesarios cuando un evento genera datos de evento. Muchos eventos, incluidos algunos eventos de interfaz de usuario, como los clics, no generan datos de evento. En estos casos, es apropiado el delegado proporcionado en la biblioteca de clases para el evento sin datos,System.EventHandler. A continuacin se muestra su declaracin.C#VBdelegate void EventHandler(object sender, EventArgs e);

Los delegados de evento son de multidifusin, lo que significa que pueden guardar referencias a ms de un mtodo de control de eventos. Para obtener ms informacin, veaDelegado. Los delegados permiten realizar un control de eventos ms flexible y detallado. Un delegado acta como remitente de eventos de la clase que provoca el evento y mantiene una lista de los controladores registrados para el evento.Para obtener ms informacin sobre cmo usar delegados para incluir funcionalidad de eventos en un componente o control, veaProvocar un evento.Para obtener informacin general sobre cmo consumir eventos en sus aplicaciones, veaConsumir eventos.

Herencia visual de formularios Windows FormsEn ocasiones, quiz decida que un proyecto debe llamar a un formulario similar a uno que ya cre en un proyecto anterior.O bien, quiz desee crear un formulario bsico con configuraciones tales como una marca de agua o determinado diseo de controles que utilizar de nuevo dentro de un proyecto, donde cada una de las iteraciones contendr modificaciones respecto a la plantilla de formulario original.La herencia de formularios permite crear un formulario base, heredar de l y hacer modificaciones mientras se conserva la configuracin original necesaria.Puede crear mediante programacin los formularios de clase derivada o mediante el Selector de herencia visual.

Cmo: Heredar formularios Windows FormsLa creacin de nuevos formularios Windows Forms mediante herencia, a partir de formularios base, es una forma prctica de duplicar los mejores logros, sin tener que crear de nuevo un formulario cada vez que se necesite.Para obtener ms informacin sobre la herencia de formularios en tiempo de diseo mediante el cuadro de dilogoSelector de herenciay sobre cmo distinguir visualmente los niveles de seguridad de los controles heredados, veaCmo: Heredar formularios mediante el cuadro de dilogo Selector de herencia.NotaPara heredar de un formulario, el archivo o el espacio de nombres que contiene dicho formulario debe haberse compilado para producir un archivo ejecutable o DLL.Para compilar el proyecto, elijaCompilaren el menCompilar.Adems, es necesario agregar a la clase que hereda el formulario una referencia al espacio de nombres.Los cuadros de dilogo y comandos de men que se ven pueden diferir de los descritos en la Ayuda, en funcin de los valores de configuracin o de edicin activos.Para cambiar la configuracin, elijaImportar y exportar configuracionesen el menHerramientas.Para obtener ms informacin, veaValores de configuracin de Visual Studio.Para heredar un formulario mediante programacin1. En la clase, agregue una referencia al espacio de nombres que contiene el formulario del cual desea heredar.2. En la definicin de clase, agregue una referencia al formulario del que va a heredar.La referencia debera incluir el espacio de nombres que contiene el formulario, seguido por un punto y el nombre del propio formulario base.C#VBpublic class Form2 : Namespace1.Form1

Reflexin (C# y Visual Basic)Personas que lo han encontrado til: 2 de 2-Valorar este temaLa reflexin proporciona objetos (de tipoType) que describen ensamblados, mdulos y tipos.Se puede utilizar la reflexin para crear dinmicamente una instancia de un tipo, enlazar el tipo a un objeto existente u obtener el tipo a partir de un objeto existente, e invocar sus mtodos o tener acceso a sus campos y propiedades.Si utiliza atributos en el cdigo, la reflexin permite tener acceso a ellos.Para obtener ms informacin, veaExtender metadatos mediante atributos.Este es un ejemplo simple de reflexin que utiliza el mtodo estticoGetType, heredado por todos los tipos de la clase baseObject, para obtener el tipo de una variable:C#VB

// Using GetType to obtain type information:int i = 42;System.Type type = i.GetType();System.Console.WriteLine(type);

El resultado es:System.Int32En el ejemplo siguiente se utiliza la reflexin para obtener el nombre completo del ensamblado cargado.C#VB

// Using Reflection to get information from an Assembly:System.Reflection.Assembly info = typeof(System.Int32).Assembly;System.Console.WriteLine(info);

El resultado es:mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089