|  | 
// 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; }
    }
}
 |