Premise
When using code analysis (or fxCop) with C# optional parameters you can get a warning of CA1026. The short reason1 for this is not suppling all parameters with a default value.
The declaration below rightly generates this warning
public Color GetColor(bool red, bool blue = true, bool green = true)
However there is a situation where you could not supply all parameters with a default, and that is extension methods. So the declaration below generates the warning because of the first parameter:
public static bool ValidateRules(this string s, Rules rules = Rules.Default)
The compiler will not let you specify a default value on the this parameter so the only two solutions is to:
- Ignore the warning, which I do not like doing because it leads to bad practices.
- Not use extension methods, which I do not like doing because I find extension methods make the code more readible.
Questions
- Are the above two options the only way to solve this?
- Is fxCop/Code Analysis incorrect in it's check?