Pregunta

¿Hay una manera de agregar parámetros opcionales a C # 3.0 como si hubiera en C # 4.0? Tengo que tener esta característica, ¡simplemente no puedo esperar!

Editar:

Si conoce una solución alternativa / pirateo para lograr esto, publíquelo también. Gracias!

¿Fue útil?

Solución

Puede usar un tipo anónimo y una reflexión como una solución a los parámetros nombrados:

public void Foo<T>(T parameters)
{
    var dict = typeof(T).GetProperties()
        .ToDictionary(p => p.Name, 
            p => p.GetValue(parameters, null));

    if (dict.ContainsKey("Message"))
    {
        Console.WriteLine(dict["Message"]);
    }
}

Así que ahora puedo llamar a Foo así:

Foo(new { Message = "Hello World" });

... y escribirá mi mensaje.

Básicamente, estoy extrayendo todas las propiedades del tipo anónimo que se pasó y las estoy convirtiendo en un diccionario de cadena y objeto (el nombre de la propiedad y su valor).

Otros consejos

Siempre hay sobrecarga de métodos. :)

Desafortunadamente, no. Necesitará el compilador C # 4.0 para soportar esto. Si desea parámetros opcionales en la plataforma .NET hoy, puede probar VB .NET o F #.

Como dijo Dustin, los parámetros opcionales vienen en C # 4.0. Un tipo de manera horrible de simular parámetros opcionales sería tener un objeto [] (o una matriz más tipificada) como su último argumento.

Uno también podría usar argumentos variables como parámetros de opción. Un ejemplo de cómo funciona esto es string.Format ().

Ver aquí:

http://blogs.msdn.com/csharpfaq /archive/2004/05/13/131493.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top