IVsExpansionEnumeration, interface
Représente une liste des extraits de code pour un service de langage particulier.
Espace de noms : Microsoft.VisualStudio.TextManager.Interop
Assembly : Microsoft.VisualStudio.TextManager.Interop.8.0 (dans Microsoft.VisualStudio.TextManager.Interop.8.0.dll)
Syntaxe
'Déclaration
<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
Le type IVsExpansionEnumeration expose les membres suivants.
Méthodes
Nom | Description | |
---|---|---|
GetCount | Retourne le nombre d'objets représentés dans cette énumération. | |
Next | Retourne le nombre spécifié d'objets de l'énumération. | |
Reset | réinitialise l'énumération au début. |
Début
Notes
Les extraits de code sont des fragments de code qui peuvent être insérés à l'aide de le Gestionnaire des extraits de code. Chaque extrait de code est associé à un langage particulier de programmation. Cette interface permet d'examiner les informations associées à des extraits de code pour un langage particulier de programmation.
Remarques à l'attention des implémenteurs
Cette interface est implémentée par le gestionnaire de développement, représenté par l'interface d' IVsExpansionManager . Visual Studio implémente généralement le gestionnaire de développement.
Remarques à l'attention des appelants
pour obtenir cette interface, appelez la méthode d' EnumerateExpansions dans l'interface d' IVsExpansionManager . Consultez l'exemple de cette rubrique.
Exemples
Cet exemple montre une méthode qui retourne un tableau de structures d' VsExpansion qui décrit un extrait de code pour la langue spécifiée.
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]);
}
}
}
}
}
}
}