コード例 #1
0
        /// <summary>
        /// Find all types with the given names that can currently loaded.
        /// If the module or depending modules was not loaded then a empty list return.
        /// </summary>
        /// <param name="jniClassName">a class name with JNI syntax.</param>
        /// <returns>the list, never null</returns>
        internal IList <TargetType> FindTypes(String jniClassName)
        {
            String             className = DebuggerUtils.ConvertJniClassName(jniClassName);
            IList <TargetType> result;

            try
            {
                result = nameTypeMap[className];
            }
            catch (KeyNotFoundException)
            {
                result = new List <TargetType>();
                nameTypeMap.Add(className, result);
            }
            IList <DebugType> types = FindTypesInModules(className);

            foreach (DebugType type in types)
            {
                bool isFound = false;
                foreach (TargetType tgType in result)
                {
                    if (tgType.Identical(type))
                    {
                        isFound = true;
                        break;
                    }
                }
                if (!isFound)
                {
                    result.Add(new TargetType(type));
                }
            }

            return(result);
        }