Exemplo n.º 1
0
        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;
 }
Exemplo n.º 3
0
 private MethodImpl(IMethodMetadata metadata, Item parent)
 {
     this.metadata = metadata;
     this.Parent = parent;
 }
Exemplo n.º 4
0
 private MethodImpl(IMethodMetadata metadata, Object parent)
 {
     _metadata = metadata;
     Parent    = parent;
 }
Exemplo n.º 5
0
        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());
        }
Exemplo n.º 6
0
		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);
		}
Exemplo n.º 7
0
 private MethodImpl(IMethodMetadata metadata, Item parent)
 {
     _metadata = metadata;
     Parent = parent;
 }
Exemplo n.º 8
0
 private MethodImpl(IMethodMetadata metadata, Item parent)
 {
     this.metadata = metadata;
     this.Parent   = parent;
 }