Condividi tramite


Classe EditArray

Unisce le operazioni di modifica più per creare una sola operazione.

Questa API non è conforme a CLS. 

Gerarchia di ereditarietà

System.Object
  Microsoft.VisualStudio.Package.EditArray

Spazio dei nomi:  Microsoft.VisualStudio.Package
Assembly:   Microsoft.VisualStudio.Package.LanguageService.9.0 (in Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.11.0 (in Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (in Microsoft.VisualStudio.Package.LanguageService.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (in Microsoft.VisualStudio.Package.LanguageService.10.0.dll)

Sintassi

'Dichiarazione
<CLSCompliantAttribute(False)> _
Public Class EditArray _
    Implements IEnumerable, IDisposable
[CLSCompliantAttribute(false)]
public class EditArray : IEnumerable, IDisposable

Il tipo EditArray espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico EditArray Inizializza una nuova istanza di EditArray classe utilizzando un oggetto Source oggetto e IVsTextView oggetto.

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica Count Ottiene il numero di operazioni di modifica rappresentate in EditArray oggetto.
Proprietà pubblica Source ottiene Source oggetto associato a questo EditArray oggetto.
Proprietà pubblica TextView ottiene IVsTextView oggetto associato a questo EditArray oggetto.

In alto

Metodi

  Nome Descrizione
Metodo pubblico Add aggiunge specificato EditSpan oggetto nella matrice delle operazioni di modifica.
Metodo pubblico ApplyEdits applica tutte le operazioni di modifica che sono state accumulate.
Metodo pubblico Dispose elimina EditArray oggetto e le relative risorse.
Metodo pubblico Equals Determina se l'oggetto specificato equivale all'oggetto corrente. (Ereditato da Object)
Metodo protetto Finalize Elimina giù EditArray oggetto. (Esegue l'override di Object.Finalize()).
Metodo pubblico GetEnumerator ottiene un enumeratore predefinito per le operazioni di modifica.
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico ToString Converte la matrice delle operazioni di modifica in una stringa formattata. (Esegue l'override di Object.ToString()).

In alto

Note

Questa classe esegue il wrapping delle operazioni di modifica più per creare un'unica operazione che può essere annullata quando si aggiorna un file di origine.Questa efficienza è stato eseguito il merge delle operazioni di modifica adiacenti.Inoltre, questa classe assicura che i marcatori esistenti come punti di interruzione e segnalibri non saranno persi alle operazioni di modifica vengono applicate al file di origine.

Questa classe viene in genere utilizzata per eseguire il wrapping di un evento di formattazione, dove più righe di origine possono essere modificate in cui viene visualizzata una sola operazione all'utente.

Per creare un solo evento di modifica, questa classe utilizza CompoundViewAction se la classe IVsTextView l'oggetto è disponibile; in caso contrario, CompoundAction la classe viene utilizzata.

Nel caso di un oggetto EditArray oggetto, un'operazione di modifica è un inserimento o una sostituzione.un'eliminazione è un caso speciale di una sostituzione in cui la stringa di sostituzione è vuota.

Note per gli implementatori

Questa classe contiene tutte le funzionalità necessarie per unire e applicare le modifiche multipli.Non è necessario derivare da questa classe.

Note per i chiamanti

Per eseguire il wrapping delle operazioni di modifica più, creare un'istanza di un nuovo EditArray oggetto quindi la chiamata Add metodo più volte con l'intervallo che viene modificata.Infine, chiamare ApplyEdits metodo per applicare le modifiche immediatamente.

Esempi

Di seguito è riportato un esempio di come sostituire o inserire la prima riga di un documento (che potrebbe, ad esempio, contenere le informazioni sulle proprietà di documento).Sebbene questo dimostri una singola operazione di modifica, l'esempio può essere espanso facilmente per supportare più righe e le operazioni di modifica più.

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();
            }
        }
    }
}

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.Package