Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/09/10 18:57:40 (15 years ago)
Author:
epitzer
Message:

add support for new StorableConstructor attribute (#900)

Location:
trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableHookAttribute.cs

    r2980 r2983  
    3131      Type type = obj.GetType();
    3232      foreach (MemberInfo memberInfo in type.GetMembers(instanceMembers)) {
    33         foreach (object attribute in memberInfo.GetCustomAttributes(false)) {
    34           StorableHookAttribute hook = attribute as StorableHookAttribute;
     33        foreach (StorableHookAttribute hook in memberInfo.GetCustomAttributes(typeof(StorableHookAttribute), false)) {         
    3534          if (hook != null && hook.HookType == hookType) {
    3635            MethodInfo methodInfo = memberInfo as MethodInfo;
    3736            if (memberInfo.MemberType != MemberTypes.Method || memberInfo == null)
    38               throw new ArgumentException("Storable hooks must be methods");           
    39             methodInfo.Invoke(obj, emptyArgs);           
     37              throw new ArgumentException("Storable hooks must be methods");
     38            methodInfo.Invoke(obj, emptyArgs);
    4039          }
    4140        }
  • trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableSerializer.cs

    r2980 r2983  
    4040
    4141    public object CreateInstance(Type type, IEnumerable<Tag> metaInfo) {
    42       return Activator.CreateInstance(type, true);
     42      object instance = StorableConstructorAttribute.CallStorableConstructor(type);
     43      if (instance == null)
     44        instance = Activator.CreateInstance(type, true);
     45      return instance;
    4346    }
    4447
Note: See TracChangeset for help on using the changeset viewer.