Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
GuidSerializer.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System;
4 using SharpYaml.Events;
5 using SharpYaml.Serialization;
6 using SiliconStudio.Core.Reflection;
7 
8 namespace SiliconStudio.Core.Yaml
9 {
10  /// <summary>
11  /// A Yaml serializer for <see cref="Guid"/>
12  /// </summary>
13  [YamlSerializerFactory]
14  internal class GuidSerializer : AssetScalarSerializerBase
15  {
16  static GuidSerializer()
17  {
18  TypeDescriptorFactory.Default.AttributeRegistry.Register(typeof(Guid), new DataContractAttribute("Guid"));
19  }
20 
21  public override bool CanVisit(Type type)
22  {
23  return type == typeof(Guid);
24  }
25 
26  public override object ConvertFrom(ref ObjectContext context, Scalar fromScalar)
27  {
28  Guid guid;
29  Guid.TryParse(fromScalar.Value, out guid);
30  return guid;
31  }
32 
33  public override string ConvertTo(ref ObjectContext objectContext)
34  {
35  return ((Guid)objectContext.Instance).ToString();
36  }
37  }
38 }