File: CodeGenerationContextInfo.cs
Web Access
Project: ..\..\..\src\Workspaces\Core\Portable\Microsoft.CodeAnalysis.Workspaces.csproj (Microsoft.CodeAnalysis.Workspaces)
// 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);
    }
}