Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2213_irace/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableHookAttribute.cs

Last change on this file was 15583, checked in by swagner, 7 years ago

#2640: Updated year of copyrights in license headers

File size: 2.3 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23
24namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
25
26
27  /// <summary>
28  /// Indicates the time at which the hook should be invoked.
29  /// </summary>
30  public enum HookType {
31
32    /// <summary>
33    /// States that this hook should be called before the storable
34    /// serializer starts decomposing the object.
35    /// </summary>
36    BeforeSerialization,
37
38    /// <summary>
39    /// States that this hook should be called after the storable
40    /// serializer hast complete re-assembled the object.
41    /// </summary>
42    AfterDeserialization
43  };
44
45
46  /// <summary>
47  /// Mark methods that should be called at certain times during
48  /// serialization/deserialization by the <c>StorableSerializer</c>.
49  /// </summary>
50  [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
51  public sealed class StorableHookAttribute : Attribute {
52
53    private readonly HookType hookType;
54    /// <summary>
55    /// Gets the type of the hook.
56    /// </summary>
57    /// <value>The type of the hook.</value>
58    public HookType HookType {
59      get { return hookType; }
60    }
61
62    /// <summary>
63    /// Mark method as <c>StorableSerializer</c> hook to be run
64    /// at the <c>HookType</c> time.
65    /// </summary>
66    /// <param name="hookType">Type of the hook.</param>
67    public StorableHookAttribute(HookType hookType) {
68      this.hookType = hookType;
69    }
70  }
71}
Note: See TracBrowser for help on using the repository browser.