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); }
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); }
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); }
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; }