Amazon.CodeAnalysis.Shared.AbstractPropertyValueAssignmentAnalyzer.AbstractPropertyValueAssignmentAnalyzer C# (CSharp) Метод

AbstractPropertyValueAssignmentAnalyzer() статический приватный Метод

static private AbstractPropertyValueAssignmentAnalyzer ( ) : System
Результат System
        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;
                }
            }
        }