File: RuntimeSource\Configuration.Binder\Specs\Members\MemberSpec.cs
Web Access
Project: src\src\Tools\ConfigurationSchemaGenerator\ConfigurationSchemaGenerator.csproj (ConfigurationSchemaGenerator)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Diagnostics;
using Microsoft.CodeAnalysis;
using SourceGenerators;
 
namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
{
    public abstract record MemberSpec
    {
        public MemberSpec(ISymbol member, TypeRef typeRef)
        {
            Debug.Assert(member is IPropertySymbol or IParameterSymbol);
            Name = member.Name;
            DefaultValueExpr = "default";
            TypeRef = typeRef;
        }
 
        public string Name { get; }
        public string DefaultValueExpr { get; protected set; }
 
        public TypeRef TypeRef { get; }
        public required string ConfigurationKeyName { get; init; }
 
        public abstract bool CanGet { get; }
        public abstract bool CanSet { get; }
    }
}