XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

HaloPixelToolBox

【WinUI3】基于USB HID通讯的花再音响工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using XFEExtension.NetCore.ServerInteractive.Interfaces;

namespace HaloPixelToolBox.Core.Models.User;

/// <summary>
/// 用户面部信息
/// </summary>
public class MyUserFaceInfo : IUserFaceInfo
{
    /// <summary>
    /// 用户 ID
    /// </summary>
    public string Id { get; set; } = string.Empty;

    /// <summary>
    /// 昵称
    /// </summary>
    public string NickName { get; set; } = string.Empty;

    /// <summary>
    /// 权限等级
    /// </summary>
    public int PermissionLevel { get; set; }

    /// <summary>
    /// 转换为字符串
    /// </summary>
    /// <returns>用户信息字符串</returns>
    public override string ToString() => $"{NickName}({(UserRole)PermissionLevel})";

    /// <summary>
    /// 从用户信息创建用户面部信息
    /// </summary>
    /// <param name="user">用户信息</param>
    /// <returns>用户面部信息</returns>
    public static MyUserFaceInfo FromUser(IUserInfo user) => new()
    {
        Id = user.Id,
        NickName = user.NickName,
        PermissionLevel = user.PermissionLevel
    };

    /// <summary>
    /// 相等运算符重载
    /// </summary>
    public static bool operator ==(MyUserFaceInfo? left, MyUserFaceInfo? right)
    {
        if (right is not null && right.Equals(left))
            return true;
        if (left is null || right is null)
            return false;
        return left.Id == right.Id;
    }

    /// <summary>
    /// 不相等运算符重载
    /// </summary>
    public static bool operator !=(MyUserFaceInfo? left, MyUserFaceInfo? right) => !(left == right);

    /// <inheritdoc/>
    public override bool Equals(object? obj) => obj?.GetHashCode() == GetHashCode();

    /// <inheritdoc/>
    // ReSharper disable once NonReadonlyMemberInGetHashCode
    public override int GetHashCode() => Id.GetHashCode();
}