public TaskDescription(Entity language, AuthorDescription author, string variant) { if (language == null) { throw new ArgumentNullException(nameof(language)); } if (author == null) { throw new ArgumentNullException(nameof(author)); } if (variant == null) { throw new ArgumentNullException(nameof(variant)); } Language = language; Author = author; Variant = variant; }
private static TaskDescription LoadFromStream(XmlReader reader) { ISet <Variable> variables = new HashSet <Variable>(); Entity language = null; AuthorDescription author = null; string variant = null; if (reader == null) { throw new ArgumentNullException(nameof(reader)); } while (!reader.IsStartElement(_TaskElementName)) { reader.Read(); } reader.ReadStartElement(_TaskElementName); while (!reader.IsStartElement(_VariablesElementName)) { reader.Read(); } bool isEmpty = reader.IsEmptyElement; reader.ReadStartElement(_VariablesElementName); while (reader.IsStartElement(_VariableElementName)) { variables.Add(LoadVariable(reader)); } if (!isEmpty) { reader.ReadEndElement(); } isEmpty = reader.IsEmptyElement; reader.ReadStartElement(_LanguageElementName); if (reader.IsStartElement()) { language = LoadEntity(reader, variables.ToDictionary(v => v.Name).AsReadOnly()); } if (!isEmpty) { reader.ReadEndElement(); } reader.ReadStartElement(_InfoElementName); while (reader.IsStartElement()) { switch (reader.Name) { case _AuthorElementName: author = LoadAuthor(reader); break; case _VariantElementName: variant = LoadVariant(reader); break; default: throw new InvalidOperationException(string.Format("Element type {0} is not supported.", reader.Name)); } } reader.ReadEndElement(); reader.ReadEndElement(); return(new TaskDescription(language, author, variant)); }