Exemple #1
0
        internal ComTypeBrowserInfo GetTypeInfo(ITypeInfo typeInfo)
        {
            Debug.Assert(typeInfo != null, "typeInfo != null");

            ComTypeBrowserInfo ComTypeBrowserInfo = (ComTypeBrowserInfo)m_cachedTypes[typeInfo];

            if (ComTypeBrowserInfo == null)
            {
                ITypeLib typeLib;
                int      index;
                typeInfo.GetContainingTypeLib(out typeLib, out index);

                TypeLibraryBrowserInfo typeLibrary = GetTypeLibraryInfo(typeLib);
                Debug.Assert(typeLibrary != null, "typeLibrary != null");

                TypeLibraryNamespaceBrowserInfo ns = typeLibrary.GetNamespace();
                Debug.Assert(ns != null, "ns != null");

                // Retrieving the namespaces may add types to CachedTypes, so try to find this type again.

                ComTypeBrowserInfo = (ComTypeBrowserInfo)m_cachedTypes[typeInfo];

                if (ComTypeBrowserInfo == null)
                {
                    ComTypeBrowserInfo = new ComTypeBrowserInfo(typeInfo, ns);
                    m_cachedTypes.Add(typeInfo, ComTypeBrowserInfo);
                }
            }

            return(ComTypeBrowserInfo);
        }
        private TypeLibraryNamespaceBrowserInfo GetNamespaceInternal()
        {
            // There is one namespace for the type library itself.

            TypeLibraryNamespaceBrowserInfo ns = new TypeLibraryNamespaceBrowserInfo(this,
                                                                                     Marshal.GetTypeLibName(m_typeLibrary.TypeLib));

            // Iterate through all the TypeInfos.

            for (int index = 0; index < m_typeLibrary.TypeLib.GetTypeInfoCount(); ++index)
            {
                ITypeInfo typeInfo;
                m_typeLibrary.TypeLib.GetTypeInfo(index, out typeInfo);

                // Add all TypeInfos except for modules and aliases.

                ObjectType infoType = ComTypeBrowserInfo.GetObjectType(typeInfo);
                if (infoType != ObjectType.Module && infoType != ObjectType.Alias)
                {
                    ns.AddType(Manager.GetTypeInfo(typeInfo, ns));
                }
            }

            return(ns);
        }
Exemple #3
0
        internal ComTypeBrowserInfo(ITypeInfo typeInfo, TypeLibraryNamespaceBrowserInfo ns)
        {
            Debug.Assert(typeInfo != null && ns != null, "typeInfo != null && ns != null");

            m_typeInfo  = new ComTypeWrapper(typeInfo);
            m_namespace = ns;
        }
 internal virtual void ClearCache()
 {
     if (m_namespace != null)
     {
         m_namespace.Dispose();
         m_namespace = null;
     }
 }
        internal virtual TypeLibraryNamespaceBrowserInfo GetNamespace()
        {
            if (m_namespace == null)
            {
                m_namespace = GetNamespaceInternal();
                Debug.Assert(m_namespace != null, "m_namespace != null");
            }

            return(m_namespace);
        }
Exemple #6
0
        internal ComTypeBrowserInfo GetTypeInfo(ITypeInfo typeInfo, TypeLibraryNamespaceBrowserInfo ns)
        {
            Debug.Assert(typeInfo != null && ns != null, "typeInfo != null && ns != null");

            ComTypeBrowserInfo ComTypeBrowserInfo = (ComTypeBrowserInfo)m_cachedTypes[typeInfo];

            if (ComTypeBrowserInfo == null)
            {
                ComTypeBrowserInfo = new ComTypeBrowserInfo(typeInfo, ns);
                m_cachedTypes.Add(typeInfo, ComTypeBrowserInfo);
            }

            return(ComTypeBrowserInfo);
        }
Exemple #7
0
        public void Dispose()
        {
            if (m_typeInfo != null)
            {
                m_typeInfo.Dispose();
                m_typeInfo = null;
            }

            if (m_baseTypes != null)
            {
                foreach (ComTypeBrowserInfo baseType in m_baseTypes.Keys)
                {
                    baseType.Dispose();
                }
                m_baseTypes = null;
            }

            m_namespace = null;
        }