protected void AssertType(DataFieldType expected) { DataFieldType?nullable = this.Type; DataFieldType type = expected; if ((((DataFieldType)nullable.GetValueOrDefault()) != type) || !nullable.HasValue) { throw new ArgumentException("The specified XML element is not a data-field of type '" + expected.ToString() + "'."); } }
/// <summary> /// Creates a strongly-typed data-field instance of the proper type from the /// specified data-field XML element. /// </summary> /// <param name="element">The data-field XML element to create a DataField /// instance from.</param> /// <returns>An instance of a class derived from the DataField class /// representing the specified data-field element.</returns> /// <exception cref="ArgumentNullException">The element parameter is /// null.</exception> /// <exception cref="ArgumentException">The specified XML element is not a /// valid data-field.</exception> private DataField FieldFromXml(XElement element) { element.ThrowIfNull("element"); try { // If the element does not have a 'type' attribute, we can only // return a weakly-typed data-field. DataFieldType?type = GetDataFieldType(element); if (type.HasValue == false) { return(new DataField(element)); } switch (type.Value) { case DataFieldType.Boolean: return(new BooleanField(element)); case DataFieldType.Fixed: return(new FixedField(element)); case DataFieldType.TextSingle: return(new TextField(element)); case DataFieldType.TextPrivate: return(new PasswordField(element)); case DataFieldType.JidSingle: return(new JidField(element)); case DataFieldType.Hidden: return(new HiddenField(element)); case DataFieldType.TextMulti: return(new TextMultiField(element)); case DataFieldType.JidMulti: return(new JidMultiField(element)); case DataFieldType.ListMulti: return(new ListMultiField(element)); case DataFieldType.ListSingle: return(new ListField(element)); default: throw new XmlException("Invalid 'type' attribute: " + type); } } catch (Exception e) { throw new ArgumentException("Invalid 'field' XML element.", e); } }
/// <summary> /// Sets the type of the data-field to the specified value. /// </summary> /// <param name="type">The value to set the type of the data-field to. Can be /// one of the values from the DataFieldType enumeration.</param> void SetType(DataFieldType?type) { if (!type.HasValue) { element.RemoveAttribute("type"); } else { string value = TypeToAttributeValue(type.Value); element.SetAttribute("type", value); } }
private void SetType(DataFieldType?type) { if (!type.HasValue) { this.element.RemoveAttribute("type"); } else { string str = this.TypeToAttributeValue(type.Value); this.element.SetAttribute("type", str); } }
private DataField FieldFromXml(XmlElement element) { DataField field; element.ThrowIfNull <XmlElement>("element"); try { DataFieldType?dataFieldType = this.GetDataFieldType(element); if (!dataFieldType.HasValue) { return(new DataField(element)); } switch (dataFieldType.Value) { case DataFieldType.Boolean: return(new BooleanField(element)); case DataFieldType.Fixed: return(new FixedField(element)); case DataFieldType.Hidden: return(new HiddenField(element)); case DataFieldType.JidMulti: return(new JidMultiField(element)); case DataFieldType.JidSingle: return(new JidField(element)); case DataFieldType.ListMulti: return(new ListMultiField(element)); case DataFieldType.ListSingle: return(new ListField(element)); case DataFieldType.TextMulti: return(new TextMultiField(element)); case DataFieldType.TextSingle: return(new TextField(element)); case DataFieldType.TextPrivate: return(new PasswordField(element)); } throw new XmlException("Invalid 'type' attribute: " + dataFieldType); } catch (Exception exception) { throw new ArgumentException("Invalid 'field' XML element.", exception); } return(field); }
private DataFieldType?GetDataFieldType() { DataFieldType?nullable; try { string attribute = this.element.GetAttribute("type"); if (string.IsNullOrEmpty(attribute)) { return(null); } nullable = new DataFieldType?(this.AttributeValueToType(attribute)); } catch (Exception exception) { throw new XmlException("The 'type' attribute of the underlying XML element is invalid.", exception); } return(nullable); }