/// <summary> /// Cria um nó com os dados basicos de um endpoint. /// </summary> /// <param name="name"></param> /// <param name="bindingType"></param> /// <param name="contract"></param> /// <param name="children"></param> /// <returns></returns> private ServiceAddressNode CreateEndpointNode(string name, string bindingType, string contract, params ServiceAddressNode[] children) { var parameters = new ServiceAddressParameterCollection { new ServiceAddressParameter("binding", bindingType), new ServiceAddressParameter("contract", contract), new ServiceAddressParameter("name", name) }; return(new ServiceAddressNode("endpoint", parameters, children != null ? children.Where(f => f != null).ToArray() : null)); }
/// <summary> /// Construtor usado na deserialização. /// </summary> /// <param name="info"></param> /// <param name="context"></param> private ServiceAddressNode(SerializationInfo info, StreamingContext context) { _children = new List <ServiceAddressNode>(); _parameters = new ServiceAddressParameterCollection(); Name = info.GetString("Name"); _parameters = (ServiceAddressParameterCollection)info.GetValue("Parameters", typeof(ServiceAddressParameterCollection)); var count = info.GetInt32("Count"); for (var i = 0; i < count; i++) { _children.Add((ServiceAddressNode)info.GetValue(i.ToString(), typeof(ServiceAddressNode))); } }
/// <summary> /// Cria uma coleção com base nos atributos XML informados. /// </summary> /// <param name="attributes"></param> /// <returns></returns> public static ServiceAddressParameterCollection CreateFromXmlAttributes(System.Xml.XmlAttributeCollection attributes) { if (attributes == null) { throw new ArgumentNullException("attributes"); } var result = new ServiceAddressParameterCollection(); foreach (System.Xml.XmlAttribute i in attributes) { result.Add(i.LocalName, i.Value); } return(result); }
/// <summary> /// Cria o nó a partir de um elemento xml. /// </summary> /// <param name="element"></param> /// <returns></returns> public static ServiceAddressNode CreateFromXmlElement(System.Xml.XmlElement element) { if (element == null) { throw new ArgumentNullException("element"); } var parameters = ServiceAddressParameterCollection.CreateFromXmlAttributes(element.Attributes); var children = new List <ServiceAddressNode>(); if (element.HasChildNodes) { foreach (var i in element.ChildNodes) { var xmlElement = i as System.Xml.XmlElement; if (xmlElement != null) { children.Add(CreateFromXmlElement(xmlElement)); } } } return(new ServiceAddressNode(element.LocalName, parameters, children.ToArray())); }
/// <summary> /// Cria uma nova instancia do nó definindo os parametros iniciais. /// </summary> /// <param name="name"></param> /// <param name="parameters"></param> /// <param name="children"></param> public ServiceAddressNode(string name, ServiceAddressParameterCollection parameters, params ServiceAddressNode[] children) { Name = name; if (parameters != null) { _parameters = parameters; } else { _parameters = new ServiceAddressParameterCollection(); } _children = new List <ServiceAddressNode>(); if (children != null) { foreach (var i in children) { if (i != null) { Add(i); } } } }
/// <summary> /// Construtor padrão. /// </summary> public ServiceAddressNode() { _parameters = new ServiceAddressParameterCollection(); _children = new List <ServiceAddressNode>(); }