Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/DecimalNumber2XmlFormatterBase.cs @ 1564

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

Stronger typing for formatters with the help of generics. Separate format and serial data type. (#548)

File size: 1.2 KB
Line 
1using System;
2using HeuristicLab.Persistence.Core;
3using HeuristicLab.Persistence.Interfaces;
4using System.Reflection;
5using System.Globalization;
6
7namespace HeuristicLab.Persistence.Default.Xml.Primitive { 
8 
9  public abstract class DecimalNumber2XmlFormatterBase<T> : FormatterBase<T, XmlString> {
10   
11    private static MethodInfo ToStringMethod = typeof(T)
12      .GetMethod(
13        "ToString",
14        BindingFlags.Instance | BindingFlags.Public,
15        null,
16        CallingConventions.Standard,
17        new[] { typeof(string), typeof(IFormatProvider) },
18        null);
19
20    private static MethodInfo ParseMethod = typeof(T)
21      .GetMethod(
22        "Parse",
23        BindingFlags.Static | BindingFlags.Public,
24        null,
25        CallingConventions.Standard,
26        new[] { typeof(string), typeof(IFormatProvider) },
27        null);
28
29    public override XmlString Format(T t) {
30      return new XmlString((string)ToStringMethod.Invoke(t, new object[] { "r", CultureInfo.InvariantCulture }));
31    }
32    public override T Parse(XmlString x) {     
33      return (T)ParseMethod.Invoke(null, new object[] { x.Data, CultureInfo.InvariantCulture });
34    }
35  } 
36}
Note: See TracBrowser for help on using the repository browser.