IVsExpansionEnumeration - интерфейс
Представляет список фрагментов кода для конкретной службы языка.
Пространство имен: Microsoft.VisualStudio.TextManager.Interop
Сборка: Microsoft.VisualStudio.TextManager.Interop.8.0 (в Microsoft.VisualStudio.TextManager.Interop.8.0.dll)
Синтаксис
'Декларация
<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
Тип IVsExpansionEnumeration предоставляет следующие члены.
Методы
Имя | Описание | |
---|---|---|
GetCount | Возвращает число объектов, представленных в этом перечислении. | |
Next | Получает заданное количество объектов из перечисления. | |
Reset | Сбросит перечисление в начале. |
В начало страницы
Заметки
Фрагменты кода части кода, которые можно вставить, используя диспетчер фрагментов кода. Каждый фрагмент связанный с указанным языком программирования. Этот интерфейс предоставляет возможность просматривать сведения, связанные с фрагментами кода для указанного языка программирования.
Примечания для разработчиков
Этот интерфейс реализуется диспетчером расширений, представленного интерфейсом IVsExpansionManager. Visual Studio обычно реализует диспетчер расширений.
Примечания к вызывающим объектам
Чтобы получить этот интерфейс, вызовите метод EnumerateExpansions в интерфейсе IVsExpansionManager. См. пример в этом разделе.
Примеры
В этом примере показан метод, который возвращает массив структур VsExpansion каждый из которых описывает один фрагмент кода для указанного языка.
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]);
}
}
}
}
}
}
}
См. также
Ссылки
Microsoft.VisualStudio.TextManager.Interop - пространство имен