public ParameterModel MapDown(ParameterMetadata model, Type ParameterMetadataType) { object ParameterMetadata = Activator.CreateInstance(ParameterMetadataType); PropertyInfo nameProperty = ParameterMetadataType.GetProperty("Name"); PropertyInfo typeProperty = ParameterMetadataType.GetProperty("Type", BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly); nameProperty?.SetValue(ParameterMetadata, model.Name); if (model.TypeMetadata != null) { typeProperty?.SetValue(ParameterMetadata, typeProperty.PropertyType.Cast(TypeModelMapper.EmitBaseType(model.TypeMetadata, typeProperty.PropertyType))); } return((ParameterModel)ParameterMetadata); }
public MethodModel MapDown(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, HelperClass.ConvertList(genericArgumentsProperty.PropertyType.GetGenericArguments()[0], model.GenericArguments.Select(t => TypeModelMapper.EmitBaseType(t, genericArgumentsProperty.PropertyType.GetGenericArguments()[0])).ToList())); } modifiersProperty?.SetValue(MethodMetadata, model.Modifiers); if (model.Parameters != null) { parametersProperty?.SetValue(MethodMetadata, HelperClass.ConvertList(parametersProperty.PropertyType.GetGenericArguments()[0], model.Parameters.Select(p => new ParameterModelMapper().MapDown(p, parametersProperty.PropertyType.GetGenericArguments()[0])).ToList())); } if (model.ReturnType != null) { returnTypeProperty?.SetValue(MethodMetadata, returnTypeProperty.PropertyType.Cast(TypeModelMapper.EmitBaseType(model.ReturnType, returnTypeProperty.PropertyType))); } return((MethodModel)MethodMetadata); }