static AbstractPropertyValueAssignmentAnalyzer() { _propertyValueRules = new Dictionary <string, PropertyValueRule>(StringComparer.Ordinal); var assembly = typeof(AbstractPropertyValueAssignmentAnalyzer).GetTypeInfo().Assembly; foreach (var name in assembly.GetManifestResourceNames()) { if (!name.EndsWith(".PropertyValueRules.xml")) { continue; } string content; using (var stream = assembly.GetManifestResourceStream(name)) using (var reader = new StreamReader(stream)) { content = reader.ReadToEnd(); } XDocument doc = XDocument.Parse(content); foreach (var element in doc.Descendants("property-value-rule")) { var rule = new PropertyValueRule() { PropertyName = element.Element("property").Value, Min = element.Element("min") != null?long.Parse(element.Element("min").Value) : (long?)null, Max = element.Element("max") != null?long.Parse(element.Element("max").Value) : (long?)null, Pattern = element.Element("pattern") != null?element.Element("pattern").Value : null }; if (!string.IsNullOrEmpty(rule.Pattern)) { try { rule.CompiledExpression = new Regex(element.Element("pattern").Value); } catch { } } _propertyValueRules[rule.PropertyName] = rule; } } }
static AbstractPropertyValueAssignmentAnalyzer() { _propertyValueRules = new Dictionary<string, PropertyValueRule>(StringComparer.Ordinal); var assembly = typeof(AbstractPropertyValueAssignmentAnalyzer).GetTypeInfo().Assembly; foreach (var name in assembly.GetManifestResourceNames()) { if (!name.EndsWith(".PropertyValueRules.xml")) continue; string content; using (var stream = assembly.GetManifestResourceStream(name)) using (var reader = new StreamReader(stream)) { content = reader.ReadToEnd(); } XDocument doc = XDocument.Parse(content); foreach(var element in doc.Descendants("property-value-rule")) { var rule = new PropertyValueRule() { PropertyName = element.Element("property").Value, Min = element.Element("min") != null ? long.Parse(element.Element("min").Value) : (long?)null, Max = element.Element("max") != null ? long.Parse(element.Element("max").Value) : (long?)null, Pattern = element.Element("pattern") != null ? element.Element("pattern").Value : null }; if (!string.IsNullOrEmpty(rule.Pattern)) { try { rule.CompiledExpression = new Regex(element.Element("pattern").Value); } catch { } } _propertyValueRules[rule.PropertyName] = rule; } } }