IVsExpansionEnumeration Interface

Definição

Representa uma lista de trechos de código para um serviço de idioma específico.

public interface class IVsExpansionEnumeration
public interface class IVsExpansionEnumeration
__interface IVsExpansionEnumeration
[System.Runtime.InteropServices.ComConversionLoss]
[System.Runtime.InteropServices.Guid("341E80BE-5B26-4DEE-A111-32A8373D1B51")]
[System.Runtime.InteropServices.InterfaceType(1)]
public interface IVsExpansionEnumeration
[<System.Runtime.InteropServices.ComConversionLoss>]
[<System.Runtime.InteropServices.Guid("341E80BE-5B26-4DEE-A111-32A8373D1B51")>]
[<System.Runtime.InteropServices.InterfaceType(1)>]
type IVsExpansionEnumeration = interface
Public Interface IVsExpansionEnumeration
Atributos

Exemplos

Este exemplo mostra um método que recupera uma matriz de VsExpansion estruturas, cada uma descreve um trecho de código para o idioma especificado.

using System;  
using System.Collections;  
using System.Runtime.InteropServices;  
using Microsoft.VisualStudio;  
using Microsoft.VisualStudio.TextManager.Interop;  
using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;  

namespace MyPackage  
{  
    public class MyReadSnippets  
    {  
        private IOleServiceProvider serviceProvider;  

        public MyReadSnippets(IOleServiceProvider serviceProvider)  
        {  
            this.serviceProvider = serviceProvider;  
        }  

        private object GetService(Guid serviceGuid, Guid interfaceGuid)  
        {  
            IntPtr pUnknown = IntPtr.Zero;  
            object unknown = null;  
            int hr = this.serviceProvider.QueryService(ref serviceGuid,  
                                    ref interfaceGuid,  
                                    out pUnknown);  
            if (ErrorHandler.Succeeded(hr))  
            {  
                unknown = Marshal.GetObjectForIUnknown(pUnknown);  
            }  
            return unknown;  
        }  

        private void GetSnippets(Guid languageGuid,ref ArrayList expansionsList)  
        {  
            IVsTextManager textManager;  
            textmanager = (IVsTextManager)this.GetService(typeof(SVsTextManager).GUID,  
                                                          typeof(IVsTextManager).GUID);  
            if (textManager != null)  
            {  
                IVsTextManager2 textManager2 = (IVsTextManager2)textManager;  
                if (textManager2 != null)  
                {  
                    IVsExpansionManager expansionManager = null;  
                    textManager2.GetExpansionManager(out expansionManager);  
                    if (expansionManager != null)  
                    {  
                        // Tell the environment to fetch all of our snippets.  
                        IVsExpansionEnumeration expansionEnumerator = null;  
                        expansionManager.EnumerateExpansions(languageGuid,  
                                                             0,     // return all info  
                                                             null,  // return all types  
                                                             0,     // return all types  
                                                             0,     // do not return NULL type  
                                                             0,     // do not return duplicates  
                                                             out expansionEnumerator);  
                        if (expansionEnumerator != null)  
                        {  
                            // Cache our expansions in an array of  
                            // VSExpansion structures.  
                            uint count   = 0;  
                            uint fetched = 0;  
                            VsExpansion expansionInfo = new VsExpansion();  
                            IntPtr[] pExpansionInfo   = new IntPtr[1];  
                            // Allocate enough memory for one VSExpansion structure.  
                            // This memory is filled in by the Next method.  
                            pExpansionInfo[0] = Marshal.AllocCoTaskMem(Marshal.SizeOf(expansionInfo));  

                            expansionEnumerator.GetCount(out count);  
                            for (uint i = 0; i < count; i++)  
                            {  
                                expansionEnumerator.Next(1, pExpansionInfo, out fetched);  
                                if (fetched > 0)  
                                {  
                                    // Convert the returned blob of data into a  
                                    // structure that can be read in managed code.  
                                    expansionInfo = (VsExpansion)  
                                                    Marshal.PtrToStructure(pExpansionInfo[0],  
                                                                           typeof(VsExpansion));  

                                    if (!String.IsNullOrEmpty(expansionInfo.shortcut))  
                                    {  
                                        expansionsList.Add(expansionInfo);  
                                    }  
                                }  
                            }  
                            Marshal.FreeCoTaskMem(pExpansionInfo[0]);  
                        }  
                    }  
                }  
            }  
        }  
    }  
}  

Comentários

Trechos de código são partes de código que podem ser inseridos usando o Gerenciador de trechos de código. Cada trecho de código é associado a uma linguagem de codificação específica. Essa interface fornece uma maneira de examinar as informações associadas a trechos de código para uma linguagem de codificação específica.

Notas aos Implementadores

Essa interface é implementada pelo Gerenciador de expansão, que é representado pela IVsExpansionManager interface. Visual Studio normalmente implementa o Gerenciador de expansão.

Notas aos Chamadores

Para obter essa interface, chame o EnumerateExpansions(Guid, Int32, String[], Int32, Int32, Int32, IVsExpansionEnumeration) método na IVsExpansionManager interface. Consulte o exemplo neste tópico.

Métodos

GetCount(UInt32)

Retorna o número de objetos representados nesta enumeração.

Next(UInt32, IntPtr[], UInt32)

Retorna o número especificado de objetos da enumeração.

Reset()

Redefine a enumeração para o início.

Aplica-se a