EditArray, classe
Fusionne de plusieurs modifications pour créer une opération unique.
Cette API n'est pas conforme CLS.
Hiérarchie d'héritage
System.Object
Microsoft.VisualStudio.Package.EditArray
Espace de noms : Microsoft.VisualStudio.Package
Assemblys : Microsoft.VisualStudio.Package.LanguageService.9.0 (dans Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
Microsoft.VisualStudio.Package.LanguageService.11.0 (dans Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
Microsoft.VisualStudio.Package.LanguageService (dans Microsoft.VisualStudio.Package.LanguageService.dll)
Microsoft.VisualStudio.Package.LanguageService.10.0 (dans Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
Syntaxe
'Déclaration
<CLSCompliantAttribute(False)> _
Public Class EditArray _
Implements IEnumerable, IDisposable
[CLSCompliantAttribute(false)]
public class EditArray : IEnumerable, IDisposable
Le type EditArray expose les membres suivants.
Constructeurs
Nom | Description | |
---|---|---|
EditArray | Initialise une nouvelle instance de la classe d'EditArray à l'aide d'un objet d'Source et un objet d'IVsTextView. |
Début
Propriétés
Nom | Description | |
---|---|---|
Count | Obtient le nombre de modifications représentées dans l'objet d'EditArray. | |
Source | Obtient l'objet Source associé à cet objet EditArray. | |
TextView | Obtient l'objet IVsTextView associé à cet objet EditArray. |
Début
Méthodes
Nom | Description | |
---|---|---|
Add | Ajoute l'objet spécifié d'EditSpan au tableau de modifications. | |
ApplyEdits | Applique toutes les modifications qui ont été cumulées. | |
Dispose | Supprime l'objet d'EditArray et ses ressources. | |
Equals | Détermine si l'objet Object spécifié est égal à l'objet Object actuel. (Hérité de Object.) | |
Finalize | Détruit l'objet d'EditArray. (Substitue Object.Finalize().) | |
GetEnumerator | Obtient un énumérateur par défaut pour les modifications. | |
GetHashCode | Sert de fonction de hachage pour un type particulier. (Hérité de Object.) | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
MemberwiseClone | Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.) | |
ToString | Convertit le choix de modifications à une chaîne mise en forme. (Substitue Object.ToString().) |
Début
Remarques
Cette classe encapsule de plusieurs modifications pour créer une opération unique qui peut être annulée en mettant à jour un fichier source.Cette efficacité est obtenue en fusionnant des modifications adjacentes.En outre, cette classe garantit que des marques existantes telles que des points d'arrêt et des signets ne sont pas perdues lorsque des modifications sont appliquées au fichier source.
Cette classe est en général utilisée pour encapsuler un événement de formatage, où de plusieurs lignes de source peuvent être modifiées dans ce que est une opération unique à l'utilisateur.
Pour créer un événement unique de modification, cette classe utilise la classe d'CompoundViewAction si un objet d'IVsTextView est disponible ; sinon, la classe d'CompoundAction est utilisée.
Dans le cas d'un objet d'EditArray, une modification est une insertion ou un remplacement.Une suppression est un cas particulier d'un remplacement où la chaîne de remplacement est vide.
Remarques à l'attention des implémenteurs
Cette classe contient toute la fonctionnalité nécessaire pour fusionner et appliquer des modifications multiples.Il n'est pas nécessaire de dériver de cette classe.
Remarques à l'attention des appelants
Pour encapsuler de plusieurs modifications, instancier un nouvel objet d'EditArray appelez ensuite la méthode d'Add une ou plusieurs fois avec l'étendue étant affectée.Enfin, appelez la méthode d'ApplyEdits pour appliquer toutes les modifications immédiatement.
Exemples
Voici un exemple de la façon remplacer ou insérer la première ligne d'un document (qui peut, par exemple, contenir les informations de propriété du document).Bien que cela montre une modification unique, l'exemple peut être aisément développé pour prendre en charge de plusieurs lignes et plusieurs modifications.
using Microsoft.VisualStudio.Package;
namespace MyLanguagePackage
{
class MyLanguageService : LanguageService
{
void SetPropertyValue(string propertyName, string propertyValue)
{
int lineNumberToReplace = 0;
string propertyLine = String.Format("//!{0} = {1}",
propertyName,
propertyValue);
string documentLine = src.GetLine(lineNumberToReplace);
bool fInsertLine = true;
if (documentLine.IndexOf("//!") == 0))
{
fInsertLine = false;
}
// Now insert or replace the line
EditArray editArray = new EditArray(this.LastActiveTextView,
true,
"Update property");
if (editArray != null)
{
TextSpan span = new TextSpan();
if (fInsertLine)
{
span.iStartLine = lineNumberToReplace;
span.iStartIndex = 0;
span.IEndLine = lineNumberToReplace;
span.iEndIndex = 0;
propertyLine += "\n";
}
else
{
int lineLength = 0;
src.GetLines().GetLengthOfLine(lineNumberToReplace,out lineLength);
span.iStartLine = lineNumberToReplace;
span.iStartIndex = 0;
span.iEndLine = lineNumberToReplace;
span.iEndIndex = lineLength;
}
editArray.Add(new EditSpan(span, propertyLine));
// Multiple Adds can be done here before ApplyEdits
editArray.ApplyEdits();
}
}
}
}
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.