/// <summary> /// Verifica se è presente un attributo di tipo stringa e ne restituisce il valore /// </summary> /// <param name="attributes">Lista attributi</param> /// <param name="attributeName">Attributo da ricercare</param> /// <param name="containerType">Tipo di dato</param> /// <param name="attributeValue">Valore estratto dall'attributo</param> /// <returns>Se l'attributo è presente e con un valore valido</returns> public static bool TryGetActiveAttribute <T>(this List <AttributeValueContainer> attributes, string attributeName, ValueContainerType containerType, out T attributeValue) { attributeValue = default(T); if (attributes == null || string.IsNullOrWhiteSpace(attributeName)) { return(false); } var attribute = attributes.FirstOrDefault(a => a.Name == attributeName); if (attribute == null) { return(false); } var isValid = attribute.IsValid && attribute.Type == containerType && attribute.TryConvertValueToType(out attributeValue); return(isValid); }
/// <summary> /// Restituisce il valore di un attributo, oppure il default /// del tipo richiesto se non presente o in caso di qualsiasi errore /// </summary> /// <typeparam name="T">Tipo del dato richiesto</typeparam> /// <param name="attributes">Lista attributi</param> /// <param name="attributeName">Attributo da ricercare</param> /// <param name="containerType">Tipo del contenitore dati da cercare</param> /// <returns>Valore dell'attributo o default del suo tipo</returns> public static T GetActiveAttributeValueOrDefault <T>(this List <AttributeValueContainer> attributes, string attributeName, ValueContainerType containerType) { T attributeValue; var isValid = attributes.TryGetActiveAttribute(attributeName, containerType, out attributeValue); return(isValid ? attributeValue : default(T)); }
/// <summary> /// Verifica se è presente un attributo di tipo stringa e ne restituisce il valore /// </summary> /// <param name="endPoint">EndPoint di cui valutare gli attributi</param> /// <param name="attributeName">Attributo da ricercare</param> /// <param name="containerType">Tipo di dato</param> /// <param name="attributeValue">Valore estratto dall'attributo</param> /// <returns>Se l'attributo è presente e con un valore valido</returns> public static bool TryGetEndPointActiveAttribute <T>(this IDncEndPoint endPoint, string attributeName, ValueContainerType containerType, out T attributeValue) { attributeValue = default(T); if (endPoint == null) { return(false); } var channel = endPoint.GetChannel(); if (channel == null) { return(false); } var attributes = channel.Settings.Customization.Attributes; if (attributes == null) { return(false); } if (attributes == null || string.IsNullOrWhiteSpace(attributeName)) { return(false); } var attribute = attributes.FirstOrDefault(a => a.Name == attributeName); if (attribute == null) { return(false); } var isValid = attribute.IsValid && attribute.Type == containerType && attribute.TryConvertValueToType(out attributeValue); return(isValid); }