Ejemplo n.º 1
0
        public MethodMetadata MapToDeserialize(MethodMetadataBase metadata)
        {
            MethodMetadata methodMetadata = new MethodMetadata
            {
                Name      = metadata.Name,
                Extension = metadata.Extension
            };
            Type         type = metadata.GetType();
            PropertyInfo genericArgumentsProperty = type.GetProperty("GenericArguments", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);

            if (genericArgumentsProperty?.GetValue(metadata) != null)
            {
                List <TypeMetadataBase> genericArguments = (List <TypeMetadataBase>)ConvertionUtilities.ConvertList(typeof(TypeMetadataBase), (IList)genericArgumentsProperty?.GetValue(metadata));
                methodMetadata.GenericArguments = genericArguments.Select(g => TypeMetadataMapper.EmitTypeForDeserialization(g)).ToList();
            }
            methodMetadata.Modifiers = metadata.Modifiers;
            PropertyInfo parametersProperty = type.GetProperty("Parameters", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);

            if (parametersProperty?.GetValue(metadata) != null)
            {
                List <ParameterMetadataBase> parameters = (List <ParameterMetadataBase>)ConvertionUtilities.ConvertList(typeof(ParameterMetadataBase), (IList)parametersProperty?.GetValue(metadata));
                methodMetadata.Parameters = parameters.Select(p => new ParameterMetadataMapper().MapToDeserialize(p)).ToList();
            }
            PropertyInfo     returnTypeProperty = type.GetProperty("ReturnType", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
            TypeMetadataBase returnType         = (TypeMetadataBase)returnTypeProperty?.GetValue(metadata);

            if (returnType != null)
            {
                methodMetadata.ReturnType = TypeMetadataMapper.EmitTypeForDeserialization(returnType);
            }
            return(methodMetadata);
        }
Ejemplo n.º 2
0
        public NamespaceMetadata MapToDeserialize(NamespaceMetadataBase metadata)
        {
            NamespaceMetadata namespaceMetadata = new NamespaceMetadata
            {
                NamespaceName = metadata.NamespaceName
            };
            Type                    type          = metadata.GetType();
            PropertyInfo            typesProperty = type.GetProperty("Types", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
            List <TypeMetadataBase> types         = (List <TypeMetadataBase>)ConvertionUtilities.ConvertList(typeof(TypeMetadataBase), (IList)typesProperty?.GetValue(metadata));

            if (types != null)
            {
                namespaceMetadata.Types = types.Select(n => TypeMetadataMapper.EmitTypeForDeserialization(n)).ToList();
            }
            return(namespaceMetadata);
        }
Ejemplo n.º 3
0
        public ParameterMetadata MapToDeserialize(ParameterMetadataBase metadata)
        {
            ParameterMetadata parameterMetadata = new ParameterMetadata
            {
                Name = metadata.Name
            };
            Type             type         = metadata.GetType();
            PropertyInfo     typeProperty = type.GetProperty("TypeMetadata", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
            TypeMetadataBase typeModel    = (TypeMetadataBase)typeProperty?.GetValue(metadata);

            if (typeModel != null)
            {
                parameterMetadata.TypeMetadata = TypeMetadataMapper.EmitTypeForDeserialization(typeModel);
            }
            return(parameterMetadata);
        }
Ejemplo n.º 4
0
        public ParameterMetadataBase MapToSerialize(ParameterMetadata metadata, Type parameterMetadataType)
        {
            object       parameterMetadata = Activator.CreateInstance(parameterMetadataType);
            PropertyInfo nameProperty      = parameterMetadataType.GetProperty("Name");
            PropertyInfo typeProperty      = parameterMetadataType.GetProperty("TypeMetadata", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);

            nameProperty?.SetValue(parameterMetadata, metadata.Name);
            if (metadata.TypeMetadata != null)
            {
                typeProperty?.SetValue(parameterMetadata, typeProperty.PropertyType.Cast(TypeMetadataMapper.EmitTypeToSerialization(metadata.TypeMetadata, typeProperty.PropertyType)));
            }
            return((ParameterMetadataBase)parameterMetadata);
        }
Ejemplo n.º 5
0
        public MethodMetadataBase MapToSerialize(MethodMetadata model, Type methodMetadataType)
        {
            object       methodMetadata           = Activator.CreateInstance(methodMetadataType);
            PropertyInfo nameProperty             = methodMetadataType.GetProperty("Name");
            PropertyInfo extensionProperty        = methodMetadataType.GetProperty("Extension");
            PropertyInfo genericArgumentsProperty = methodMetadataType.GetProperty("GenericArguments", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
            PropertyInfo modifiersProperty        = methodMetadataType.GetProperty("Modifiers");
            PropertyInfo parametersProperty       = methodMetadataType.GetProperty("Parameters", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
            PropertyInfo returnTypeProperty       = methodMetadataType.GetProperty("ReturnType", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);

            nameProperty?.SetValue(methodMetadata, model.Name);
            extensionProperty?.SetValue(methodMetadata, model.Extension);
            if (model.GenericArguments != null)
            {
                genericArgumentsProperty?.SetValue(methodMetadata, ConvertionUtilities.ConvertList(genericArgumentsProperty.PropertyType.GetGenericArguments()[0],
                                                                                                   model.GenericArguments.Select(t => TypeMetadataMapper.EmitTypeToSerialization(t, genericArgumentsProperty.PropertyType.GetGenericArguments()[0])).ToList()));
            }
            modifiersProperty?.SetValue(methodMetadata, model.Modifiers);
            if (model.Parameters != null)
            {
                parametersProperty?.SetValue(methodMetadata, ConvertionUtilities.ConvertList(parametersProperty.PropertyType.GetGenericArguments()[0],
                                                                                             model.Parameters.Select(p => new ParameterMetadataMapper().MapToSerialize(p, parametersProperty.PropertyType.GetGenericArguments()[0])).ToList()));
            }
            if (model.ReturnType != null)
            {
                returnTypeProperty?.SetValue(methodMetadata, returnTypeProperty.PropertyType.Cast(TypeMetadataMapper.EmitTypeToSerialization(model.ReturnType, returnTypeProperty.PropertyType)));
            }
            return((MethodMetadataBase)methodMetadata);
        }