Klasa ExpansionFunction
Zapewnia obsługę funkcji rozszerzeń w wstawki kodu programu obsługi języka.
Ten interfejs API nie jest zgodny ze specyfikacją CLS.
Hierarchia dziedziczenia
System.Object
Microsoft.VisualStudio.Package.ExpansionFunction
Przestrzeń nazw: Microsoft.VisualStudio.Package
Zestawy: Microsoft.VisualStudio.Package.LanguageService.9.0 (w Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
Microsoft.VisualStudio.Package.LanguageService.11.0 (w Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
Microsoft.VisualStudio.Package.LanguageService (w Microsoft.VisualStudio.Package.LanguageService.dll)
Microsoft.VisualStudio.Package.LanguageService.10.0 (w Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
Składnia
'Deklaracja
<ComVisibleAttribute(True)> _
<CLSCompliantAttribute(False)> _
Public MustInherit Class ExpansionFunction _
Implements IVsExpansionFunction
[ComVisibleAttribute(true)]
[CLSCompliantAttribute(false)]
public abstract class ExpansionFunction : IVsExpansionFunction
Typ ExpansionFunction uwidacznia następujące elementy członkowskie.
Konstruktorzy
Nazwa | Opis | |
---|---|---|
ExpansionFunction | Inicjuje nowe wystąpienie ExpansionFunction klasy. |
Początek
Właściwości
Nazwa | Opis | |
---|---|---|
Arguments | Pobiera lub ustawia argumenty funkcji. | |
ExpansionProvider | Pobiera dostawcy rozszerzenia, która jest właścicielem tej funkcji rozszerzeń. | |
FieldName | Pobiera lub ustawia nazwę pola, z którym jest skojarzona ta funkcja rozszerzenia. |
Początek
Metody
Nazwa | Opis | |
---|---|---|
Equals | Określa, czy określony obiekt jest równa bieżącego obiektu. (Odziedziczone z Object). | |
FieldChanged | Wywoływane, gdy pole zostało zmienione jej wartość. | |
Finalize | Umożliwia obiekt spróbuj zwolnić zasoby i wykonywania innych operacji oczyszczania, zanim jest odzyskane w procesie wyrzucania elementów bezużytecznych. (Odziedziczone z Object). | |
GetArgument | Pobiera określony argument. | |
GetCurrentValue() | Pobiera bieżącą wartość funkcji rozszerzenia jako ciąg znaków. | |
GetCurrentValue(String%, Int32%) | Pobiera bieżącą wartość funkcji rozszerzenia. | |
GetDefaultValue() | Pobiera wartości domyślne funkcji rozszerzenia. | |
GetDefaultValue(String%, Int32%) | Pobiera wartości domyślne funkcji rozszerzenia. | |
GetFieldValue | Zwraca wartość określonego pola. | |
GetFunctionType | Pobiera typ funkcji; oznacza to wpisz wartości, które funkcja zwraca. | |
GetHashCode | Służy jako funkcja mieszania dla określonego typu. (Odziedziczone z Object). | |
GetIntellisenseList | Pobiera listę wszystkich wartości, które można zwrócić funkcja rozszerzenia. | |
GetListCount | Pobiera liczbę elementów na liście wartości dla funkcji rozszerzenia. | |
GetListText | Pobiera wartość wybranej pozycji listy. | |
GetSelection | Pobiera zakres zaznaczony tekst w bieżącym widoku. | |
GetType | Pobiera Type bieżącej instancji. (Odziedziczone z Object). | |
MemberwiseClone | Tworzy kopię płytkie bieżące Object. (Odziedziczone z Object). | |
ReleaseFunction | Alokacje zwalnia użytkownika ExpansionFunction klasy mogły zostać wprowadzone. | |
ToString | Zwraca ciąg, który reprezentuje bieżącego obiektu. (Odziedziczone z Object). |
Początek
Uwagi
Funkcja rozszerzenia jest skojarzone z polem w szablonie urywek kodu w celu zapewnienia wartość lub wartości dla tego pola w czasie, gdy urywek jest wstawiany.Zobacz Funkcja elementu (urywki kodu IntelliSense) szczegółowe informacje na temat sposobu zadeklarowano funkcję rozszerzenia.
W każdym przypadku, gdy wartość pola musi być wyświetlane, funkcja rozszerzenia "uruchomiono", oznacza to, że metody na ExpansionFunction obiekt, który reprezentuje funkcji rozszerzenia są nazywane do zwrócenia odpowiedniej wartości.
Uwagi dotyczące implementacji
Jeżeli rozszerzenia funkcji w wstawki kodu programu jest wspieranie usługi języka, musi pochodzić z klasy z ExpansionFunction klasy i wprowadzenia w życie GetCurrentValue metody.Jeśli chcesz obsługiwać wiele wartości dla pola, a następnie należy zastąpić GetIntellisenseList metodę, aby powrócić do listy wartości.Wreszcie, należy zastąpić CreateExpansionFunction metodę w LanguageService klasy i zwrócić wystąpienia danej wersji ExpansionFunction klasy.Należy zauważyć, że nazwa funkcji rozszerzenia jest przekazywana do CreateExpansionFunction metoda pozwala utworzyć wystąpienia jednej z kilku różnych wersji programu ExpansionFunction klasy, jeden dla każdej funkcji rozszerzenia.
Przestroga |
---|
Funkcja rozszerzenia, która przyjmuje argumenty, lub musi mieć dostęp do innych pól nie powinna być związana z edytowalne pole jako dostawca rozszerzeń nie może być całkowicie zainicjowana przez czas, zostanie wywołana funkcja rozszerzenia.W wyniku funkcji rozszerzenia nie jest w stanie uzyskać wartość jej argumentów lub jakiegokolwiek innego pola. Wartość domyślną odpowiedniego dla pola zawierającego funkcji rozszerzenia powinny być zawsze określona jako że wartość domyślna jest zawsze wyświetlany po pierwsze dodaje się wstawki kodu programu. |
Uwagi dotyczące wywoływania
Metoda ta jest tworzona w CreateExpansionFunction metoda LanguageService klasy.CreateExpansionFunction z wywoływana jest metoda GetExpansionFunction w ExpansionProvider klasy, która z kolei jest wywoływana przez Visual Studio, gdy dodaje się wstawki kodu programu i pola są wypełniane.Wstawki kodu programu jest wstawiane przez wywołanie do InsertNamedExpansion, InsertSpecificExpansion, lub DisplayExpansionBrowser metod w ExpansionProvider klasy.
Przykłady
Ten przykład pokazuje pliku urywka kodu i skojarzone implementacji funkcji rozszerzeń.Wstawki kodu programu dostępne są dwie funkcje rozszerzeń, jeden dla pokazywania listy opcji i drugi dla aktualizacji w polu niepodlegającym edycji na podstawie wartości argumentu (który jest w tym przypadku wartość edytowalne pole).
Plik szablonu urywek kodu (w tym sprawa o nazwie class.xml).Uwaga <Function> Definiowanie funkcji rozszerzeń znaczniki.
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="https://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>class</Title>
<Shortcut>class</Shortcut>
<Description>Code snippet for class</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal Editable="false">
<ID>ConstructorName</ID>
<Function>GetClassName($ClassName$)</Function>
<Default>MyClass</Default>
</Literal>
<Literal>
<ID>ClassName</ID>
<ToolTip>Class name</ToolTip>
<Default>MyClass</Default>
</Literal>
<Literal>
<ID>access</ID>
<ToolTip>public, internal, private or protected</ToolTip>
<Function>EnumAccessType()</Function>
<Default>public</Default>
</Literal>
</Declarations>
<Code Language="mylanguage"><![CDATA[$access$ class $ClassName$
{
public $ConstructorName$() {
$selected$$end$
}
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Jest to realizacji funkcji rozszerzeń i jak są tworzone z usługi języka.
using Microsoft.VisualStudio.Package;
namespace MyLanguagePackage
{
//==============================================================
// The Expansion functions.
//--------------------------------------------------------------
// This expansion function returns the value of its argument.
internal class MyGetClassNameExpansionFunction : ExpansionFunction
{
public MyGetClassNameExpansionFunction(ExpansionProvider provider)
: base(provider)
{
}
public override string GetCurrentValue()
{
string argValue = null;
if (this.ExpansionProvider != null)
{
// The expansion session may not be initialized yet
// so do not try to get any arguments if the session is
// is null. In this case, the default value for the
// associated field should be the same as the field
// passed as the argument.
if (this.ExpansionProvider.ExpansionSession != null)
{
argValue = this.GetArgument(0);
}
}
return argValue;
}
}
//--------------------------------------------------------------
// This expansion function returns a list of options.
internal class MyEnumAccessTypeExpansionFunction : ExpansionFunction
{
string[] nameList = null;
public MyEnumAccessTypeExpansionFunction(ExpansionProvider provider)
: base(provider)
{
}
public override string[] GetIntellisenseList()
{
if (nameList == null)
{
nameList = new string[] {
"public",
"protected",
"private",
"internal",
};
}
return nameList;
}
public override string GetCurrentValue()
{
// Enumerations do not need to return a value.
return null;
}
}
//==============================================================
// The language service, showing how the expansion functions are
// instantiated.
//--------------------------------------------------------------
public class MyLanguageService : LanguageService
{
public override ExpansionFunction CreateExpansionFunction(ExpansionProvider provider,
string functionName)
{
ExpansionFunction function = null;
if (String.Compare(functionName, "GetClassName", true) == 0)
{
function = new MyGetClassNameExpansionFunction(provider);
}
else if (String.Compare(functionName, "EnumAccessType", true) == 0)
{
function = new MyEnumAccessTypeExpansionFunction(provider);
}
return function;
}
}
}
Bezpieczeństwo wątku
Wszystkie publiczne static (Shared w języku Visual Basic) elementy członkowskie tego typu są bezpieczne dla wątków. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.