Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
DynamicYamlArray.cs
Go to the documentation of this file.
1 using System;
2 using System.Dynamic;
3 using SharpYaml.Serialization;
4 
5 namespace SiliconStudio.Core.Yaml
6 {
7  /// <summary>
8  /// Dynamic version of <see cref="YamlSequenceNode"/>.
9  /// </summary>
11  {
12  internal YamlSequenceNode node;
13 
14  public YamlSequenceNode Node
15  {
16  get
17  {
18  return node;
19  }
20  }
21 
22  public DynamicYamlArray(YamlSequenceNode node)
23  {
24  this.node = node;
25  }
26 
27  public override bool TryConvert(ConvertBinder binder, out object result)
28  {
29  if (binder.Type.IsAssignableFrom(node.GetType()))
30  {
31  result = node;
32  }
33  else
34  {
35  throw new InvalidOperationException();
36  }
37  return true;
38  }
39 
40  public override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value)
41  {
42  var key = Convert.ToInt32(indexes[0]);
43  node.Children[key] = ConvertFromDynamic(value);
44  return true;
45  }
46 
47  public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
48  {
49  var key = Convert.ToInt32(indexes[0]);
50  result = ConvertToDynamic(node.Children[key]);
51  return true;
52  }
53 
54  public void Add(object value)
55  {
56  node.Children.Add(ConvertFromDynamic(value));
57  }
58  }
59 }
override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value)
override bool TryConvert(ConvertBinder binder, out object result)
override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
Dynamic version of YamlSequenceNode.