private IDictionary <TLDRule.RuleType, IDictionary <string, TLDRule> > GetTLDRules() { var results = new Dictionary <TLDRule.RuleType, IDictionary <string, TLDRule> >(); var rules = Enum.GetValues(typeof(TLDRule.RuleType)).Cast <TLDRule.RuleType>(); foreach (var rule in rules) { results[rule] = new Dictionary <string, TLDRule>(StringComparer.CurrentCultureIgnoreCase); } var ruleStrings = ReadRulesData(); // Strip out any lines that are: // a.) A comment // b.) Blank var filteredRuleString = ruleStrings.Where(ruleString => !ruleString.StartsWith("//") && ruleString.Trim().Length != 0); foreach (var ruleString in filteredRuleString) { var result = new TLDRule(ruleString); results[result.Type][result.Name] = result; } // Return our results: if (CoreHelpers.InDebugMode()) { Debug.WriteLine(string.Format("Loaded {0} rules into cache.", results.Values.Sum(r => r.Values.Count))); } return(results); }