Ejemplo n.º 1
0
        private TypeMetadata EmitReturnType(MethodBase method, AssemblyMetadata rootAssembly, ITypeMetadataExtractor extractor)
        {
            var methodInfo = method as MethodInfo;

            if (methodInfo == null)
            {
                return(null);
            }

            return(methodInfo.ReturnType.EmitReference(rootAssembly) ?? extractor.Extract(methodInfo.ReturnType, rootAssembly));
        }
Ejemplo n.º 2
0
 private IEnumerable <ParameterMetadata> EmitParameters(IEnumerable <ParameterInfo> param, AssemblyMetadata rootAssembly, ITypeMetadataExtractor extractor)
 {
     foreach (var parameterInfo in param)
     {
         yield return(new ParameterMetadata(parameterInfo.Name, parameterInfo.ParameterType.EmitReference(rootAssembly) ?? extractor.Extract(parameterInfo.ParameterType, rootAssembly)));
     }
 }
Ejemplo n.º 3
0
        public MethodMetadata Extract(MethodBase method, AssemblyMetadata rootAssembly, ITypeMetadataExtractor extractor)
        {
            var methodData = new MethodMetadata
            {
                Name             = method.Name,
                GenericArguments = !method.IsGenericMethodDefinition
                    ? null
                    : EmitGenericArguments(method.GetGenericArguments(), rootAssembly, extractor).ToList(),
                ReturnType = EmitReturnType(method, rootAssembly, extractor),
                Parameters = EmitParameters(method.GetParameters(), rootAssembly, extractor).ToList(),
                Modifiers  = EmitModifiers(method),
                Extension  = EmitExtension(method),
            };

            methodData.RootAssembly = rootAssembly;

            return(methodData);
        }
Ejemplo n.º 4
0
 private IEnumerable <TypeMetadata> EmitGenericArguments(IEnumerable <Type> param, AssemblyMetadata rootAssembly, ITypeMetadataExtractor extractor)
 {
     foreach (var type in param)
     {
         yield return(type.EmitReference(rootAssembly) ?? extractor.Extract(type, rootAssembly));;
     }
 }
Ejemplo n.º 5
0
 public NamespaceMetadataExtractor(ITypeMetadataExtractor typeMetadataExtractor)
 {
     _typeMetadataExtractor = typeMetadataExtractor;
 }