Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutoriales] C# Métodos condicionales
#1


Tutorial de métodos condicionales
Visual Studio .NET 2003
Este tutorial trata sobre los métodos condicionales, los cuales proporcionan un poderoso mecanismo con el que las llamadas a métodos se pueden incluir u omitir dependiendo de si se ha definido o no un símbolo de preprocesador.

Archivos de ejemplo

Vea Ejemplo de métodos condicionales para descargar y generar los archivos de ejemplo que se utilizan en este tutorial.

Información adicional

Argumentos de la línea de comandos
17.4.2 El atributo Conditional
Conditional
#define
/define (definición de preprocesador)
System.Diagnostics (Espacio de nombres)
Debug.Assert (Método)
Aserciones en el código administrado
Tutorial

Los métodos condicionales permiten a los programadores crear métodos cuyas llamadas se pueden colocar en el código y, después, incluirlos u omitirlos durante la compilación según un símbolo de preprocesamiento.

Suponga que desea habilitar cierto código de aserción en las versiones generadas para depuración, y omitirlo en las versiones comerciales. En C++, existe más de un modo de implementar esta funcionalidad en el código, por ejemplo:

Mediante #ifdef se definen ambas versiones, de depuración y lanzamiento, de una macro. La versión de depuración llama al código de seguimiento, mientras que la versión de lanzamiento no hace nada. Como C# no admite macros, este método no funciona.
Tener dos implementaciones del código al que se llama. Es decir, en la versión de depuración, tener funcionalidad completa y, en la versión comercial, código auxiliar vacío para los métodos. Los usuarios eligen cuál desean incluir cuando vinculan el proyecto. El problema de este enfoque es que las versiones comerciales contienen llamadas a métodos vacíos, y esta configuración resulta más compleja.
Los métodos condicionales de C# proporcionan una solución simple a este problema, similar al primer enfoque indicado anteriormente. Existen dos mecanismos básicos para hacerlo:

Definir, mediante #define, el identificador de preprocesamiento directamente en el código fuente. Vea un ejemplo de este enfoque en Conditional.
Definir el identificador de preprocesamiento en la línea de comandos de C# mediante la opción /define (/d). Este método se utiliza en el siguiente ejemplo.
Los métodos condicionales se utilizan en la plataforma .NET Framework. El espacio de nombres System.Diagnostics contiene una serie de clases que permiten el seguimiento y la depuración de aplicaciones. Utilice las clases System.Diagnostics.Trace y System.Diagnostics.Debug para agregar sofisticadas capacidades de seguimiento y depuración a una aplicación (esta funcionalidad se puede obtener de las versiones comerciales mediante el uso de métodos condicionales).

El ejemplo siguiente muestra cómo implementar un mecanismo de seguimiento muy simple mediante métodos condicionales. System.Diagnostics.Trace proporciona mecanismos de seguimiento mucho más sofisticados, pero utiliza el mecanismo fundamental que se indica a continuación para ofrecer esta funcionalidad.

Ejemplo

Este ejemplo consta de dos archivos de código fuente: el primero es la biblioteca que proporciona un mecanismo de seguimiento, mientras que el segundo es el programa cliente que utiliza esta biblioteca.

Archivo #1: crear métodos condicionales

El código siguiente muestra una simple biblioteca que proporciona un mecanismo de seguimiento que muestra mensajes en la consola del sistema. Los clientes pueden incrustar llamadas de seguimiento en el código y, después, ser capaces de controlar cuándo se utilizan, mediante la definición de símbolos en su propia fase de compilación.

// CondMethod.cs
// compile with: /target:library /dGran sonrisaEBUG
using System;
using System.Diagnostics;
namespace TraceFunctions
{
public class Trace
{
[Conditional("DEBUG")]
public static void Message(string traceMessage)
{
Console.WriteLine("[TRACE] - " + traceMessage);
}
}
}
Descripción del código

La siguiente línea:

[Conditional("DEBUG")]
marca el método Message como condicional (por medio del atributo Conditional). El atributo Conditional recibe un parámetro: el identificador de preprocesamiento que controla si se incluye la llamada al método cuando se compilan los clientes. Si el identificador de preprocesamiento está definido, se realiza una llamada al método; en caso contrario, la llamada no se inserta en el código del cliente.

Existen algunas restricciones sobre qué métodos se pueden marcar como condicionales; para obtener más información, vea 17.4.2 El atributo Conditional en Especificación del lenguaje C#.

Archivo #2: utilizar el método condicional

El siguiente programa cliente utiliza la clase Trace, definida en el archivo #1, para realizar un seguimiento sencillo.

// TraceTest.cs
// compile with: /reference:CondMethod.dll
// arguments: A B C
using System;
using TraceFunctions;

public class TraceClient
{
public static void Main(string[] args)
{
Trace.Message("Main Starting");

if (args.Length == 0)
{
Console.WriteLine("No arguments have been passed");
}
else
{
for( int i=0; i < args.Length; i++)
{
Console.WriteLine("Arg[{0}] is [{1}]",i,args[i]);
}
}

Trace.Message("Main Ending");
}
}
Descripción del código

El código condicional se incluye en el código del cliente dependiendo de si el identificador de preprocesamiento está definido cuando se compila el código del cliente.

Compilar con el código del cliente y el indicador /dGran sonrisaEBUG significa que el compilador inserta la llamada en el método Trace. Si el símbolo no está definido, la llamada no se realiza.

Ejecución de ejemplo

El comando:

tracetest A B C
produce el siguiente resultado:

[TRACE] - Main Starting
Arg[0] is [A]
Arg[1] is [B]
Arg[2] is [C]
[TRACE] - Main Ending
El comando:

tracetest
produce el siguiente resultado:

[TRACE] - Main Starting
No arguments have been passed
[TRACE] - Main Ending


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [Tutorial] Métodos para redireccionar URLs (HTML, PHP y Javascript wiston3 1 126 01-12-2016, 11:12 PM
Último mensaje: zeuz
  7 Mejores Tutoriales de Desarrollo Web para principiantes CarlosAlberto 14 642 19-02-2016, 11:06 PM
Último mensaje: zeuz
  [pedido] tutoriales para aprender css sondeo 10 715 04-01-2016, 01:22 PM
Último mensaje: Taquion
  recomendacion Guias o tutoriales javascript,jquery,php Finer 6 465 13-04-2014, 01:28 AM
Último mensaje: nicolasfidalgo
  05.-Curso PHP-MySQL. Funciones de variables y condicionales serveramigos 9 1,282 18-12-2012, 01:53 AM
Último mensaje: BrayanFG
  Tutoriales Diseño y Programacion Web joseph228 44 2,948 05-11-2012, 05:03 PM
Último mensaje: papi
  Necesito Tutoriales! nicoovg 10 1,064 25-09-2012, 07:24 AM
Último mensaje: licos2909
  [Tutoriales] C#~Propiedades [Novato] Postteandox 0 481 21-11-2011, 01:08 AM
Último mensaje: Postteandox
  consulta java , condicionales mauro770 6 684 01-10-2009, 08:06 PM
Último mensaje: mauro770



Usuarios navegando en este tema: 1 invitado(s)