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 | |
---|---|---|
EditArray | Inizializza una nuova istanza di EditArray classe utilizzando un oggetto Source oggetto e IVsTextView oggetto. |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
Count | Ottiene il numero di operazioni di modifica rappresentate in EditArray oggetto. | |
Source | ottiene Source oggetto associato a questo EditArray oggetto. | |
TextView | ottiene IVsTextView oggetto associato a questo EditArray oggetto. |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
Add | aggiunge specificato EditSpan oggetto nella matrice delle operazioni di modifica. | |
ApplyEdits | applica tutte le operazioni di modifica che sono state accumulate. | |
Dispose | elimina EditArray oggetto e le relative risorse. | |
Equals | Determina se l'oggetto specificato equivale all'oggetto corrente. (Ereditato da Object) | |
Finalize | Elimina giù EditArray oggetto. (Esegue l'override di Object.Finalize()). | |
GetEnumerator | ottiene un enumeratore predefinito per le operazioni di modifica. | |
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) | |
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) | |
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) | |
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.