Partager via


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
Méthode publique 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
Propriété publique Count Obtient le nombre de modifications représentées dans l'objet d'EditArray.
Propriété publique Source Obtient l'objet Source associé à cet objet EditArray.
Propriété publique TextView Obtient l'objet IVsTextView associé à cet objet EditArray.

Début

Méthodes

  Nom Description
Méthode publique Add Ajoute l'objet spécifié d'EditSpan au tableau de modifications.
Méthode publique ApplyEdits Applique toutes les modifications qui ont été cumulées.
Méthode publique Dispose Supprime l'objet d'EditArray et ses ressources.
Méthode publique Equals Détermine si l'objet Object spécifié est égal à l'objet Object actuel. (Hérité de Object.)
Méthode protégée Finalize Détruit l'objet d'EditArray. (Substitue Object.Finalize().)
Méthode publique GetEnumerator Obtient un énumérateur par défaut pour les modifications.
Méthode publique GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publique 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.

Voir aussi

Référence

Microsoft.VisualStudio.Package, espace de noms