Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
DataVisitNode.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 System.Collections.Generic;
5 using SiliconStudio.Core.Reflection;
6 
7 namespace SiliconStudio.Assets.Visitors
8 {
9  /// <summary>
10  /// Base class for all items in a collection (array, list or dictionary)
11  /// </summary>
12  public abstract class DataVisitNode : IDataVisitNode<DataVisitNode>
13  {
14  private object instance;
15  private readonly ITypeDescriptor instanceDescriptor;
16  private readonly Type instanceType;
17 
18  internal DataVisitNode(object instance, ITypeDescriptor instanceDescriptor)
19  {
20  if (instanceDescriptor == null) throw new ArgumentNullException("instanceDescriptor");
21 
22  this.instance = instance;
23  this.instanceDescriptor = instanceDescriptor;
24  this.instanceType = instanceDescriptor.Type;
25  }
26 
27  public DataVisitNode Parent { get; set; }
28 
29  public bool HasMembers
30  {
31  get
32  {
33  return Members != null;
34  }
35  }
36 
37  public bool HasItems
38  {
39  get
40  {
41  return Items != null;
42  }
43  }
44 
45  public List<DataVisitNode> Members { get; set; }
46 
47  public List<DataVisitNode> Items { get; set; }
48 
49 
50  public object Instance
51  {
52  get
53  {
54  return instance;
55  }
56  protected set
57  {
58  instance = value;
59  }
60  }
61 
62  public ITypeDescriptor InstanceDescriptor
63  {
64  get
65  {
66  return instanceDescriptor;
67  }
68  }
69 
70  public Type InstanceType
71  {
72  get
73  {
74  return instance != null ? instance.GetType() : instanceType;
75  }
76  }
77  }
78 }
Base class for all items in a collection (array, list or dictionary)
Provides access members of a type.