簡體   English   中英

C# 從 Object 獲取屬性值

[英]C# Get property values from an Object

在我的 WebApp 項目中,我在大多數控制器/剃須刀頁面 model 方法中記錄當前用戶的詳細信息。 我將用於檢索當前用戶的代碼移到存儲庫中,並將 object 返回給調用方法。

我不確定如何獲取 object 中返回的屬性值。

Class:

public class CurrentUser : ICurrentUser
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public CurrentUser(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public class CurrentUserProperties
    {
        public string Id { get; set; }
        public string Username { get; set; }
        public string Forename { get; set; }
        public string Surname { get; set; }
    }

    public object GetCurrentUser()
    {
        CurrentUserProperties currentUser = new CurrentUserProperties
        {
            Id = _httpContextAccessor.HttpContext.User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value,
            Username = _httpContextAccessor.HttpContext.User.Identity.Name,
            Forename = _httpContextAccessor.HttpContext.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.GivenName)?.Value,
            Surname = _httpContextAccessor.HttpContext.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Surname)?.Value
        };
        return currentUser;
    }
}

Controller 方法:

object currentUser = _currentUser.GetCurrentUser();

在此處輸入圖像描述

我希望使用盡可能少的代碼來獲取返回的這些屬性的值,因為我將在整個應用程序的大多數方法中使用它,謝謝

根據'Rufus'的評論,下面的代碼起到了作用,謝謝

CurrentUserProperties currentUser = (CurrentUserProperties)_currentUser.GetCurrentUser();

        var userId = currentUser.Id;
        var username = currentUser.Username;
        var forename = currentUser.Forename;
        var surname = currentUser.Surname;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM