Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
        private void _addTypesAndMethods(QueryableType type)
        {
            _types.Add(type);
            _methods.AddRange(type.Methods);

            foreach (QueryableType nestedType in type.NestedTypes)
            {
                _addTypesAndMethods(nestedType);
            }
        }