Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
DataVisitMember.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 SiliconStudio.Core.Reflection;
5 
6 namespace SiliconStudio.Assets.Visitors
7 {
8  /// <summary>
9  /// A diff element for a member (field or property) of a class.
10  /// </summary>
11  public sealed class DataVisitMember : DataVisitNode
12  {
13  private readonly IMemberDescriptor memberDescriptor;
14 
15  /// <summary>
16  /// Initializes a new instance of the <see cref="DataVisitMember" /> class.
17  /// </summary>
18  /// <param name="memberDescriptor">The member descriptor.</param>
19  /// <param name="value">The value.</param>
20  /// <exception cref="System.ArgumentNullException">
21  /// instance
22  /// or
23  /// instanceDescriptor
24  /// or
25  /// memberDescriptor
26  /// </exception>
27  public DataVisitMember(object value, IMemberDescriptor memberDescriptor)
28  : base(value, memberDescriptor.TypeDescriptor)
29  {
30  if (memberDescriptor == null) throw new ArgumentNullException("memberDescriptor");
31  this.memberDescriptor = memberDescriptor;
32  }
33 
34  /// <summary>
35  /// Gets the member descriptor.
36  /// </summary>
37  /// <value>The member descriptor.</value>
38  public IMemberDescriptor MemberDescriptor
39  {
40  get
41  {
42  return memberDescriptor;
43  }
44  }
45 
46  public void SetValue(object newValue)
47  {
48  MemberDescriptor.Set(Parent.Instance, newValue);
49  Instance = newValue;
50 
51  if (Parent.InstanceType.IsStruct() && Parent is DataVisitMember)
52  {
53  ((DataVisitMember)Parent).SetValue(Parent.Instance);
54  }
55  }
56 
57  public override string ToString()
58  {
59  return string.Format("{0} = {1}", MemberDescriptor.Name, Instance ?? "null");
60  }
61  }
62 }
A diff element for a member (field or property) of a class.
Base class for all items in a collection (array, list or dictionary)
DataVisitMember(object value, IMemberDescriptor memberDescriptor)
Initializes a new instance of the DataVisitMember class.