public TypeModel ToModel() { TypeModel model = new TypeModel(); model.TypeEnum = EnumMapper.ConvertEnum <TypeTypesEnum, TypeTypesSerializationModelEnum>(TypeEnum); model.TypeName = TypeName; model.NamespaceName = NamespaceName; model.GenericArguments = GenericArguments?.Select(EmitTypeModel); model.Modifiers = new Tuple <AccessLevelEnum, SealedEnum, AbstractEnum>( EnumMapper.ConvertEnum <AccessLevelEnum, AccessLevelSerializationModelEnum>(Modifiers.Item1), EnumMapper.ConvertEnum <SealedEnum, SealedSerializationModelEnum>(Modifiers.Item2), EnumMapper.ConvertEnum <AbstractEnum, AbstractSerializationModelEnum>(Modifiers.Item3)); model.Attributes = Attributes?.Select(attributeMetadata => attributeMetadata.ToModel()); model.FullTypeName = FullTypeName; model.DeclaringType = DeclaringType == null ? null : EmitTypeModel(DeclaringType); model.BaseType = DeclaringType == null ? null : EmitTypeModel(BaseType); model.ImplementedInterfaces = ImplementedInterfaces?.Select(EmitTypeModel); model.Fields = Fields?.Select(typeModel => typeModel.ToModel()); model.Methods = Methods?.Select(typeModel => typeModel.ToModel()); model.Properties = Properties?.Select(typeModel => typeModel.ToModel()); model.Indexers = Indexers?.Select(typeModel => typeModel.ToModel()); model.Events = Events?.Select(typeModel => typeModel.ToModel()); model.Constructors = Constructors?.Select(typeModel => typeModel.ToModel()); model.NestedTypes = NestedTypes?.Select(EmitTypeModel); return(model); }
/// <summary> /// Create a deep clone of the member data object. /// </summary> public object Clone() { return(new MemberData() { Constructors = Constructors?.Select(c => (string[])c.Clone()).ToArray(), Events = (JsonDictionary <string, EventData>)Events?.Clone(), Fields = (JsonDictionary <string, FieldData>)Fields?.Clone(), Indexers = Indexers?.Select(i => (IndexerData)i.Clone()).ToArray(), Methods = (JsonDictionary <string, MethodData>)Methods?.Clone(), NestedTypes = (JsonDictionary <string, TypeData>)NestedTypes?.Clone(), Properties = (JsonDictionary <string, PropertyData>)Properties?.Clone(), }); }