| File: PathPart.cs | Web Access |
| Project: src\src\Controls\src\BindingSourceGen\Controls.BindingSourceGen.csproj (Microsoft.Maui.Controls.BindingSourceGen) |
namespace Microsoft.Maui.Controls.BindingSourceGen; public interface IPathPart : IEquatable<IPathPart> { public string? PropertyName { get; } } public sealed record InaccessibleMemberAccess(TypeDescription ContainingType, TypeDescription memberType, AccessorKind Kind, string MemberName, bool IsValueType = false) : IPathPart { public string PropertyName => MemberName; public bool Equals(IPathPart other) { return other is InaccessibleMemberAccess memberAccess && ContainingType == memberAccess.ContainingType && Kind == memberAccess.Kind && MemberName == memberAccess.MemberName && IsValueType == memberAccess.IsValueType; } } public record MemberAccess(string MemberName, bool IsValueType = false) : IPathPart { public string PropertyName => MemberName; public bool Equals(IPathPart other) { return other is MemberAccess memberAccess && MemberName == memberAccess.MemberName && IsValueType == memberAccess.IsValueType; } } public sealed record IndexAccess(string DefaultMemberName, object Index, bool IsValueType = false) : IPathPart { public string? PropertyName => $"{DefaultMemberName}[{Index}]"; public bool Equals(IPathPart other) { return other is IndexAccess indexAccess && DefaultMemberName == indexAccess.DefaultMemberName && Index.Equals(indexAccess.Index) && IsValueType == indexAccess.IsValueType; } } public sealed record ConditionalAccess(IPathPart Part) : IPathPart { public string? PropertyName => Part.PropertyName; public bool Equals(IPathPart other) { return other is ConditionalAccess conditionalAccess && Part.Equals(conditionalAccess.Part); } } public sealed record Cast(TypeDescription TargetType) : IPathPart { public string? PropertyName => null; public bool Equals(IPathPart other) { return other is Cast cast && TargetType.Equals(cast.TargetType); } }