// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Microsoft.CodeAnalysis.Editing;
namespace Microsoft.CodeAnalysis.CodeGeneration;
/// <summary>
/// Context and preferences.
/// </summary>
internal abstract class CodeGenerationContextInfo
{
public readonly CodeGenerationContext Context;
protected CodeGenerationContextInfo(CodeGenerationContext context)
{
Context = context;
}
public CodeGenerationContextInfo WithContext(CodeGenerationContext value)
=> WithContextImpl(value);
public SyntaxGenerator Generator => GeneratorImpl;
public CodeGenerationOptions Options => OptionsImpl;
public ICodeGenerationService Service => ServiceImpl;
protected abstract SyntaxGenerator GeneratorImpl { get; }
protected abstract CodeGenerationOptions OptionsImpl { get; }
protected abstract ICodeGenerationService ServiceImpl { get; }
protected abstract CodeGenerationContextInfo WithContextImpl(CodeGenerationContext value);
}
|