public MethodMetadata(IMethodMetadata methodMetadata) { Name = methodMetadata.Name; SavedHash = methodMetadata.SavedHash; IsExtension = methodMetadata.IsExtension; Modifiers = methodMetadata.Modifiers; // Generic Arguments if (methodMetadata.GenericArguments is null) { GenericArguments = null; } else { List <ITypeMetadata> genericArguments = new List <ITypeMetadata>(); foreach (ITypeMetadata genericArgument in methodMetadata.GenericArguments) { if (AlreadyMapped.TryGetValue(genericArgument.SavedHash, out IMetadata mappedArgument)) { genericArguments.Add(mappedArgument as ITypeMetadata); } else { genericArguments.Add(new TypeMetadata(genericArgument.SavedHash, genericArgument.Name)); } } GenericArguments = genericArguments; } // Return type if (methodMetadata.ReturnType is null) { ReturnType = null; } else if (AlreadyMapped.TryGetValue(methodMetadata.ReturnType.SavedHash, out IMetadata item)) { ReturnType = item as ITypeMetadata; } else { ReturnType = new TypeMetadata(methodMetadata.ReturnType.SavedHash, methodMetadata.ReturnType.Name); } // Parameters if (methodMetadata.Parameters is null) { Parameters = Enumerable.Empty <IParameterMetadata>(); } else { List <IParameterMetadata> parameters = new List <IParameterMetadata>(); foreach (IParameterMetadata parameter in methodMetadata.Parameters) { if (AlreadyMapped.TryGetValue(parameter.SavedHash, out IMetadata item)) { parameters.Add(item as IParameterMetadata); } else { IParameterMetadata newParameter = new ParameterMetadata(parameter); parameters.Add(newParameter); AlreadyMapped.Add(newParameter.SavedHash, newParameter); } } Parameters = parameters; } FillChildren(new StreamingContext()); }
private MethodImpl(IMethodMetadata metadata, Item parent) { _metadata = metadata; Parent = parent; }
private MethodImpl(IMethodMetadata metadata, Item parent) { this.metadata = metadata; this.Parent = parent; }
private MethodImpl(IMethodMetadata metadata, Object parent) { _metadata = metadata; Parent = parent; }
public SerializationMethodMetadata(IMethodMetadata methodMetadata) { Name = methodMetadata.Name; SavedHash = methodMetadata.SavedHash; IsExtension = methodMetadata.IsExtension; Modifiers = methodMetadata.Modifiers; // Generic Arguments if (methodMetadata.GenericArguments is null) { GenericArguments = null; } else { List <ITypeMetadata> genericArguments = new List <ITypeMetadata>(); foreach (ITypeMetadata genericArgument in methodMetadata.GenericArguments) { if (AlreadyMapped.TryGetValue(genericArgument.SavedHash, out IMetadata mappedArgument)) { genericArguments.Add(mappedArgument as ITypeMetadata); } else { // use temporary constructor to save its hash, retrieve actual object afterr all mapping has been done genericArguments.Add(new SerializationTypeMetadata( new SerializationTypeMetadata(genericArgument.SavedHash, genericArgument.Name))); } } GenericArguments = genericArguments; } // Return type if (AlreadyMapped.TryGetValue(methodMetadata.ReturnType.SavedHash, out IMetadata item)) { ReturnType = item as ITypeMetadata; } else { // use temporary constructor to save its hash, retrieve actual object afterr all mapping has been done ReturnType = new SerializationTypeMetadata( new SerializationTypeMetadata(methodMetadata.ReturnType.SavedHash, methodMetadata.ReturnType.Name)); } // Parameters if (methodMetadata.Parameters is null) { Parameters = Enumerable.Empty <IParameterMetadata>(); } else { List <IParameterMetadata> parameters = new List <IParameterMetadata>(); foreach (IParameterMetadata parameter in methodMetadata.Parameters) { if (AlreadyMapped.TryGetValue(parameter.SavedHash, out item)) { parameters.Add(item as IParameterMetadata); } else { IParameterMetadata newParameter = new SerializationParameterMetadata(parameter); parameters.Add(newParameter); AlreadyMapped.Add(newParameter.SavedHash, newParameter); } } Parameters = parameters; } FillChildren(new StreamingContext()); }
private static string getFormattedReturnType(IMethodMetadata methodMetadata) { return (methodMetadata.ReturnType.Namespace != null && !methodMetadata.ReturnType.Namespace.Contains("Collection")) ? methodMetadata.ReturnType.Name : string.Format("List<{0}>", methodMetadata.ReturnType.GetGenericArguments()[0].Name); }