public TypeAttributeHandlerResult TryMap(AttributeMap item, TypeState s) { RuntimeTypeModel model = s.Model; object tmp; int tag = 0; if (item.TryGet("tag", out tmp)) { tag = (int)tmp; } Type knownType = null; try { if (item.TryGet("knownTypeName", out tmp)) { knownType = model.GetType((string)tmp, Helpers.GetAssembly(s.Type)); } else if (item.TryGet("knownType", out tmp)) { knownType = (Type)tmp; } } catch (Exception ex) { throw new InvalidOperationException("Unable to resolve sub-type of: " + s.Type.FullName, ex); } if (knownType == null) { throw new InvalidOperationException("Unable to resolve sub-type of: " + s.Type.FullName); } s.DerivedTypes.Add(new DerivedTypeCandidate(tag, knownType)); return(TypeAttributeHandlerResult.Done); }