RazorEditorParser Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.
public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
- Devralma
-
RazorEditorParser
- Uygulamalar
Açıklamalar
Bu ayrıştırıcı, düzenleyicilerin artımlı ayrıştırma konusunda endişelenmelerini önlemek için tasarlanmıştır. Yöntemi CheckForStructureChanges(TextChange) bir düzenleyicide kullanıcı tarafından yapılan her değişiklikle çağrılabilir ve ayrıştırıcı değişikliği artımlı olarak uygulayıp uygulayamadığını belirten bir sonuç sağlar.
Bu ayrıştırıcıya sahip düzenleyiciler için genel iş akışı:
- Kullanıcı belgeyi düzenler.
- Düzenleyici, düzenlemeyi açıklayan ve güncelleştirilmiş metin arabelleğine başvuru sağlayan bir yapı oluştururTextChange.
- Düzenleyici, bu değişikliğin geçirilmesini çağırır CheckForStructureChanges(TextChange) .
- Ayrıştırıcı, değişikliğin var olan bir ayrıştırma ağacı düğümüne uygulanabileceğini belirler.
enum
. Ancak, Accepted veya Rejected bayrakları HER ZAMAN olacaktır.Bir değişiklik yalnızca söz dizimi ağacındaki tek, benzersiz Span (bkz Microsoft.AspNetCore.Razor.Parser.SyntaxTree. ) değişikliğin tamamına sahip olarak tanımlanabilirse artımlı olarak ayrıştırılabilir. Örneğin, bir değişiklik birden çok Spansn ile çakışıyorsa, değişiklik artımlı olarak ayrıştırılamaz ve tam bir yeniden ayrıştırma gereklidir. Değişiklik Span a) tamamen kendi sınırları içinde gerçekleşirse veya b) değişikliği kabul edebilen bir öğesinin SpanEditHandler sonundaki salt eklemedir (bkzTextChange. ) değişiklik "sahibidir".CanAcceptChange(Span, TextChange)
döndürdüğünde RazorEditorParserAcceptedhemen güncelleştirilir CurrentParseTree . Ancak düzenleyicinin kendi veri yapılarını bağımsız olarak güncelleştirmesi beklenir. Düzenleyici 'den CheckForStructureChanges(TextChange)döner dönmez bunu yapmak için kullanabilirCurrentParseTree, ancak (ideal olarak) yeni ağaca gerek kalmadan bunu yapmak için mantığı olmalıdır.
tarafından döndürülürseRejected, arka plan ayrıştırma görevi zaten başlatılmıştır.CheckForStructureChanges(TextChange) Bu görev tamamlandığında, yeni oluşturulan kodu, DocumentParseComplete ayrıştırma ağacını ve yeniden ayrıştırmaya neden olan özgün TextChange başvuruyu içeren olay tetiklenir ve düzenleyicinin yeni ağacı çağrısından CheckForStructureChanges(TextChange)sonra yapılan değişikliklere karşı çözümlemesine olanak tanır.
Yeniden ayrıştırma CheckForStructureChanges(TextChange) devam ederken çağrısı gerçekleşirse, yeniden ayrıştırma HEMEN iptal edilir ve Rejected yeniden ayrıştırılmaya çalışılmadan döndürülür. Başka bir deyişle, bir tüketici döndüren öğesini çağırıp CheckForStructureChanges(TextChange)tetiklenmeden önce DocumentParseComplete yeniden çağırırsa, ikinci değişiklik için yalnızca bir DocumentParseComplete olay alır.Rejected
Oluşturucular
RazorEditorParser(RazorEngineHost, String) |
Düzenleyici ayrıştırıcısını oluşturur. Etkin düzenleyici başına bir örnek kullanılmalıdır. Bu örnek yeniden ayrıştırmalar arasında paylaşılabilir ancak hiçbir zaman belgeler arasında paylaşılmamalıdır. |
Özellikler
CurrentParseTree |
Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı. |
FileName |
Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı. |
Host |
Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı. |
LastResultProvisional |
Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı. |
Yöntemler
CheckForStructureChanges(TextChange) |
Bir değişikliğin belgede yapısal bir değişikliğe neden olup olmadığını belirler ve neden olmazsa, bunu var olan ağaç için uygular. Yapısal bir değişiklik olursa, otomatik olarak yeniden ayrıştırma başlatır. |
Dispose() |
Bu ayrıştırıcıyı atılır. Düzenleyici penceresi kapatıldığında ve belge kaldırıldığında çağrılmalıdır. |
Dispose(Boolean) |
Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı. |
GetAutoCompleteString() |
Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı. |
Ekinlikler
DocumentParseComplete |
Belgenin tam bir yeniden ayrıştırma işlemi tamamlandığında olay tetiklenir. |
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin