private T ComputeOptionValue <T>(string optionName, DiagnosticDescriptor rule, TryParseValue <T> tryParseValue, T defaultValue) { if (TryGetSpecificOptionValue(rule.Id, out var optionValue) || TryGetSpecificOptionValue(rule.Category, out optionValue) || TryGetGeneralOptionValue(out optionValue)) { return(optionValue); } return(defaultValue); // Local functions. bool TryGetSpecificOptionValue(string specificOptionKey, out T specificOptionValue) { if (SpecificOptions.TryGetValue(specificOptionKey, out var specificRuleOptions) && specificRuleOptions.TryGetValue(optionName, out var valueString)) { return(tryParseValue(valueString, out specificOptionValue)); } specificOptionValue = defaultValue; return(false); } bool TryGetGeneralOptionValue(out T generalOptionValue) { if (GeneralOptions.TryGetValue(optionName, out var valueString)) { return(tryParseValue(valueString, out generalOptionValue)); } generalOptionValue = defaultValue; return(false); } }
private T ComputeOptionValue <T>(string optionName, DiagnosticDescriptor rule, TryParseValue <T> tryParseValue, T defaultValue) { if (TryGetSpecificOptionValue(rule.Id, out var optionValue) || TryGetSpecificOptionValue(rule.Category, out optionValue) || TryGetGeneralOptionValue(out optionValue)) { return(optionValue); } return(defaultValue); // Local functions. #pragma warning disable IDE0060 // Remove unused parameter - https://github.com/dotnet/roslyn/issues/32973 bool TryGetSpecificOptionValue(string specificOptionKey, out T specificOptionValue) #pragma warning restore IDE0060 // Remove unused parameter { if (SpecificOptions.TryGetValue(specificOptionKey, out var specificRuleOptions) && specificRuleOptions.TryGetValue(optionName, out var valueString)) { return(tryParseValue(valueString, out specificOptionValue)); } specificOptionValue = defaultValue; return(false); } #pragma warning disable IDE0060 // Remove unused parameter - https://github.com/dotnet/roslyn/issues/32973 bool TryGetGeneralOptionValue(out T generalOptionValue) #pragma warning restore IDE0060 // Remove unused parameter { if (GeneralOptions.TryGetValue(optionName, out var valueString)) { return(tryParseValue(valueString, out generalOptionValue)); } generalOptionValue = defaultValue; return(false); } }