IVsExpansionEnumeration Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Liste von Codeausschnitten für einen bestimmten Sprachdienst dar.
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
- Attribute
Beispiele
Dieses Beispiel zeigt eine-Methode, die ein Array von-Strukturen abruft, VsExpansion von denen jeweils ein Code Ausschnitt für die angegebene Sprache beschrieben wird.
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]);
}
}
}
}
}
}
}
Hinweise
Code Ausschnitte sind Code Elemente, die mit dem Code Ausschnitt-Manager eingefügt werden können. Jeder Ausschnitt ist einer bestimmten Programmiersprache zugeordnet. Diese Schnittstelle bietet eine Möglichkeit, die den Code Ausschnitten zugeordneten Informationen für eine bestimmte Programmiersprache zu untersuchen.
Hinweise für Ausführende
Diese Schnittstelle wird vom Erweiterungs-Manager implementiert, der durch die- IVsExpansionManager Schnittstelle dargestellt wird. Visual Studio Implementiert in der Regel den Erweiterungs-Manager.
Hinweise für Aufrufer
Um diese Schnittstelle abzurufen, rufen Sie die- EnumerateExpansions(Guid, Int32, String[], Int32, Int32, Int32, IVsExpansionEnumeration) Methode in der- IVsExpansionManager Schnittstelle auf. Weitere Informationen finden Sie im Beispiel in diesem Thema.
Methoden
| GetCount(UInt32) |
Gibt die Anzahl von Objekten zurück, die in dieser Enumeration dargestellt werden. |
| Next(UInt32, IntPtr[], UInt32) |
Gibt die angegebene Anzahl von Objekten aus der Enumeration zurück. |
| Reset() |
Setzt die Enumeration auf den Anfang zurück. |