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)); }
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))); } }
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); }
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));; } }
public NamespaceMetadataExtractor(ITypeMetadataExtractor typeMetadataExtractor) { _typeMetadataExtractor = typeMetadataExtractor; }