internal QueryableModule(ModuleDefinition moduleDefinition, QueryableAssembly assembly) { _assembly = assembly; _name = Utility.ToString(_getName(moduleDefinition)); _fullPath = Utility.ToString(moduleDefinition.FullyQualifiedName); _moduleType = _getModuleType(moduleDefinition); _targetRuntimeVersion = Utility.ToString(_getTargetRuntimeVersion(moduleDefinition)); _targetPlatform = _getTargetPlatform(moduleDefinition); _hasNativeCode = _getHasNativeCode(moduleDefinition); _isStrongNameSigned = _getIsStrongNameSigned(moduleDefinition); if (moduleDefinition.Assembly != null && moduleDefinition == moduleDefinition.Assembly.MainModule) { _assembly.MainModule = this; } foreach (Resource resource in moduleDefinition.Resources) { _resources.Add(new QueryableResource(resource, this)); } foreach (TypeDefinition typeDefinition in moduleDefinition.Types) { QueryableType type = new QueryableType(typeDefinition, this, null); _addTypesAndMethods(type); } }
internal QueryableMethod(MethodDefinition methodDefinition, QueryableType type) { _assembly = type.Assembly; _module = type.Module; _type = type; _name = methodDefinition.Name; _fullName = methodDefinition.FullName; if (methodDefinition == methodDefinition.Module.EntryPoint) { _module.EntryPointMethod = this; } }
internal QueryableType(TypeDefinition typeDefinition, QueryableModule module, QueryableType declaringType) { _assembly = module.Assembly; _module = module; _declaringType = declaringType; _name = typeDefinition.Name; _fullName = typeDefinition.FullName; foreach (TypeDefinition nestedType in typeDefinition.NestedTypes) { _nestedTypes.Add(new QueryableType(nestedType, module, this)); } foreach (MethodDefinition methodDefinition in typeDefinition.Methods) { _methods.Add(new QueryableMethod(methodDefinition, this)); } }
private void _addTypesAndMethods(QueryableType type) { _types.Add(type); _methods.AddRange(type.Methods); foreach (QueryableType nestedType in type.NestedTypes) { _addTypesAndMethods(nestedType); } }