2011-01-19 16 views
5

¿Puede CodeDom crear argumentos opcionales al generar un método C# y proporcionar un valor predeterminado?¿Puede CodeDom crear argumentos opcionales al generar un método C#?

Por ejemplo:

public void ExampleMethod(int required 
          , string optionalstr = "default string" 
          , int optionalint = 10) 

Solución He encontrado una solución simple para esto, sólo puede poner el valor por defecto como parte del nombre de argumento:

CodeParameterDeclarationExpression(typeof(int), "optionalint = 5"); 

Esto funciona para mí b/c Solo estoy usando CodeDom para producir código C#. No funcionará si necesita admitir varios idiomas.

+1

Tenga en cuenta que sólo porque usted puede hacer esto no quiere decir que sea una buena idea :) –

+0

Me sorprende que eso no dé un error. – SLaks

Respuesta

4

Sí.

Agregue el atributo [Optional].
Para especificar el valor predeterminado, agregue el atributo [[DefaultParameterValue(...)]. (Si el valor por defecto es 0 o null, este atributo se puede omitir.

me escribió una more detailed explanation en mi blog.

+0

¿Puedo proporcionar un valor predeterminado? (Simplemente actualicé la pregunta para obtener más detalles sobre esto) Me gustaría dar un valor de cadena (por ejemplo) un valor predeterminado en lugar de solo pasar nulo. – NotDan

+0

@Not: Sí. Agregue el atributo '[DefaultParameterValue]'. – SLaks

+0

Sí, esos trabajos, gracias. Resharper no le gusta aunque = (Ojalá hubiera una manera de hacerlo salir en el formato, int opcional = 5). – NotDan

Cuestiones relacionadas