| File: SourceGenerators\SourceGeneratorRazorCodeDocument.cs | Web Access |
| Project: src\roslyn\src\Razor\src\Compiler\Microsoft.CodeAnalysis.Razor.Compiler\src\Microsoft.CodeAnalysis.Razor.Compiler.csproj (Microsoft.CodeAnalysis.Razor.Compiler) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable enable using Microsoft.AspNetCore.Razor.Language; namespace Microsoft.NET.Sdk.Razor.SourceGenerators; /// <summary> /// A wrapper for <see cref="RazorCodeDocument"/> /// </summary> /// <remarks> /// The razor compiler modifies the <see cref="RazorCodeDocument"/> in place during the various phases, /// meaning object identity is maintained even when the contents have changed. /// /// We need to be able to identify from the source generator if a given code document was modified or /// returned unchanged. Rather than implementing deep equality on the <see cref="RazorCodeDocument"/> /// which can get expensive, we instead use a wrapper class. If the underlying document is unchanged we /// return the original wrapper class. If the underlying document is changed, we return a new instance /// of the wrapper. /// </remarks> internal sealed class SourceGeneratorRazorCodeDocument(RazorCodeDocument razorCodeDocument) { public RazorCodeDocument CodeDocument { get; } = razorCodeDocument; }