private MultiValuedProperty <T> GetValues <T>(string xPath, AdfsAuthenticationConfig.TryParseValueDelegate <T> parser) { MultiValuedProperty <T> multiValuedProperty = new MultiValuedProperty <T>(); if (this.EnsureXmlObject(false)) { using (XmlNodeList xmlNodeList = this.configXmlDoc.SelectNodes(xPath)) { foreach (object obj in xmlNodeList) { XmlNode xmlNode = (XmlNode)obj; string value = xmlNode.Value; T item; if (parser(value, out item)) { try { multiValuedProperty.Add(item); } catch (InvalidOperationException) { } } } } } return(multiValuedProperty); }
private T GetValue <T>(string xPath, AdfsAuthenticationConfig.TryParseValueDelegate <T> parser) { MultiValuedProperty <T> values = this.GetValues <T>(xPath, parser); if (values.Count <= 0) { return(default(T)); } return(values[0]); }
private void ValidateNodeList <T>(List <ValidationError> errors, string xPath, AdfsAuthenticationConfig.TryParseValueDelegate <T> parser, ADPropertyDefinition propertyDefinition, LocalizedString nodeCountErrorString, AdfsAuthenticationConfig.NodeValueErrorDelegate nodeValueError, AdfsAuthenticationConfig.NodeValueErrorDelegate nodeValueDupError) { using (XmlNodeList xmlNodeList = this.configXmlDoc.SelectNodes(xPath)) { if (xmlNodeList.Count == 0) { errors.Add(new PropertyValidationError(nodeCountErrorString, propertyDefinition, null)); } else { MultiValuedProperty <T> multiValuedProperty = new MultiValuedProperty <T>(); foreach (object obj in xmlNodeList) { XmlNode xmlNode = (XmlNode)obj; T item; if (!parser(xmlNode.Value, out item)) { errors.Add(new PropertyValidationError(nodeValueError(xmlNode.Value), propertyDefinition, null)); } else if (nodeValueDupError != null) { try { multiValuedProperty.Add(item); } catch (InvalidOperationException) { errors.Add(new PropertyValidationError(nodeValueDupError(xmlNode.Value), propertyDefinition, null)); } } } } } }