IVsExpansionEnumeration Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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. |