Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
ValidateValueMetadata.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 
5 namespace SiliconStudio.Core
6 {
7  /// <summary>
8  /// Delegate ValidateValueCallback used by <see cref="ValidateValueMetadata"/>.
9  /// </summary>
10  /// <param name="value">The value to validate.</param>
11  /// <returns>The same value or a coerced value.</returns>
12  public delegate void ValidateValueCallback<T>(ref T value);
13 
15  {
16  public static ValidateValueMetadata<T> New<T>(ValidateValueCallback<T> invalidationCallback)
17  {
18  return new ValidateValueMetadata<T>(invalidationCallback);
19  }
20 
21  public abstract void Validate(ref object obj);
22  }
23 
24  /// <summary>
25  /// A metadata to allow validation/coercision of a value before storing the value into the <see cref="PropertyContainer"/>.
26  /// </summary>
28  {
29  private readonly ValidateValueCallback<T> validateValueCallback;
30 
31  /// <summary>
32  /// Initializes a new instance of the <see cref="ValidateValueMetadata"/> class.
33  /// </summary>
34  /// <param name="validateValueCallback">The validate value callback.</param>
35  /// <exception cref="System.ArgumentNullException">validateValueCallback</exception>
36  public ValidateValueMetadata(ValidateValueCallback<T> validateValueCallback)
37  {
38  if (validateValueCallback == null) throw new ArgumentNullException("validateValueCallback");
39  this.validateValueCallback = validateValueCallback;
40  }
41 
42  /// <summary>
43  /// Gets the validate value callback.
44  /// </summary>
45  /// <value>The validate value callback.</value>
46  public ValidateValueCallback<T> ValidateValueCallback
47  {
48  get
49  {
50  return validateValueCallback;
51  }
52  }
53 
54  public override void Validate(ref object obj)
55  {
56  T objCopy = (T)obj;
57  validateValueCallback(ref objCopy);
58  obj = objCopy;
59  }
60  }
61 }
A metadata to allow validation/coercision of a value before storing the value into the PropertyContai...
ValidateValueMetadata(ValidateValueCallback< T > validateValueCallback)
Initializes a new instance of the ValidateValueMetadata class.
Specifies metadata for an PropertyKey.
delegate void ValidateValueCallback< T >(ref T value)
Delegate ValidateValueCallback used by ValidateValueMetadata.