Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberEnumeration2XmlFormatterBase.cs @ 1566

Last change on this file since 1566 was 1566, checked in by epitzer, 15 years ago

Format white space. (Ctrl-K, Ctrl-D) (#548)

File size: 1.2 KB
Line 
1using System.Collections;
2using System.Text;
3using HeuristicLab.Persistence.Interfaces;
4using System;
5
6namespace HeuristicLab.Persistence.Default.Xml.Compact {
7
8  public abstract class NumberEnumeration2XmlFormatterBase<T> : FormatterBase<T, XmlString> where T : IEnumerable {
9
10    protected virtual string Separator { get { return ";"; } }
11    protected abstract void Add(IEnumerable enumeration, object o);
12    protected abstract IEnumerable Instantiate();
13    protected abstract string FormatValue(object o);
14    protected abstract object ParseValue(string o);
15
16    public override XmlString Format(T t) {
17      StringBuilder sb = new StringBuilder();
18      foreach (var value in (IEnumerable)t) {
19        sb.Append(FormatValue(value));
20        sb.Append(Separator);
21      }
22      return new XmlString(sb.ToString());
23    }
24
25    public override T Parse(XmlString x) {
26      IEnumerable enumeration = Instantiate();
27      string[] values = x.Data.Split(new[] { Separator }, StringSplitOptions.RemoveEmptyEntries);
28      foreach (var value in values) {
29        Add(enumeration, ParseValue(value));
30      }
31      return (T)enumeration;
32    }
33  }
34
35}
Note: See TracBrowser for help on using the repository browser.