5

Can CodeDom create optional arguments when generating a c# method and provide a default value?

For example:

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

Solution I've found a simple workaround for this, you can just put the default value in as part of the argument name:

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

This works for me b/c I'm only using the CodeDom to produce C# code. It won't work if you need to support multiple languages.

NotDan
  • 31,709
  • 36
  • 116
  • 156

1 Answers1

5

Yes.

Add the [Optional] attribute.
To specify the default value, add the [[DefaultParameterValue(...)] attribute. (If the default value is 0 or null, this attribute can be omitted.

I wrote a more detailed explanation on my blog.

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
  • Can I provide a default value? (Just updated the question for more details about this) I'd like to give a string value (for example) a default value instead of it just passing null. – NotDan Jan 19 '11 at 21:25
  • @Not: Yes. Add the `[DefaultParameterValue]` attribute. – SLaks Jan 19 '11 at 21:44
  • Yep, those work, thanks. Resharper doesn't like it though =( I wish there was a way to make it output in the , int optional = 5) format. – NotDan Jan 19 '11 at 21:59
  • @Not: That's a bug in Resharper. You should report it. – SLaks Jan 19 '11 at 22:24