IVsExpansionEnumeration (Interfaz)
Representa una lista de fragmentos de código para un servicio de lenguaje determinado.
Espacio de nombres: Microsoft.VisualStudio.TextManager.Interop
Ensamblado: Microsoft.VisualStudio.TextManager.Interop.8.0 (en Microsoft.VisualStudio.TextManager.Interop.8.0.dll)
Sintaxis
'Declaración
<GuidAttribute("341E80BE-5B26-4DEE-A111-32A8373D1B51")> _
<InterfaceTypeAttribute()> _
Public Interface IVsExpansionEnumeration
[GuidAttribute("341E80BE-5B26-4DEE-A111-32A8373D1B51")]
[InterfaceTypeAttribute()]
public interface IVsExpansionEnumeration
[GuidAttribute(L"341E80BE-5B26-4DEE-A111-32A8373D1B51")]
[InterfaceTypeAttribute()]
public interface class IVsExpansionEnumeration
[<GuidAttribute("341E80BE-5B26-4DEE-A111-32A8373D1B51")>]
[<InterfaceTypeAttribute()>]
type IVsExpansionEnumeration = interface end
public interface IVsExpansionEnumeration
El tipo IVsExpansionEnumeration expone los siguientes miembros.
Métodos
Nombre | Descripción | |
---|---|---|
GetCount | devuelve el número de objetos representados en esta enumeración. | |
Next | devuelve el número especificado de objetos de la enumeración. | |
Reset | Restablece la enumeración al principio. |
Arriba
Comentarios
Los fragmentos de código son piezas de código que se pueden insertar mediante el administrador de fragmentos de código. Cada fragmento es asociado con un lenguaje específico de codificación. Esta interfaz proporciona una manera de examinar la información asociada con fragmentos de código para un idioma determinado de codificación.
Notas para los implementadores
Esta interfaz se implementa mediante el administrador de extensiones, representado por la interfaz de IVsExpansionManager . Visual Studio implementa normalmente al administrador de la extensión.
Notas para los llamadores
Para obtener esta interfaz, llame al método de EnumerateExpansions en la interfaz de IVsExpansionManager . Vea el ejemplo de este tema.
Ejemplos
En este ejemplo se muestra un método que recupera una matriz de estructuras de VsExpansion que describa un fragmento de código para el 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]);
}
}
}
}
}
}
}
Vea también
Referencia
Microsoft.VisualStudio.TextManager.Interop (Espacio de nombres)