C# 从对象中获取 属性 个值
C# Get property values from an Object
在我的 WebApp 项目中,我通过大多数 controller/razor 页面模型方法记录了当前用户的详细信息。我将用于检索当前用户的代码移动到存储库中,并将 return 一个对象移动到调用方法中。
我不确定如何获取对象中 returned 的属性值。
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;
}
}
控制器方法:
object currentUser = _currentUser.GetCurrentUser();
我希望使用尽可能少的代码来获取这些属性的值 returned 鉴于我将在整个应用程序的大多数方法中使用它,谢谢
根据 'Rufus' 的评论,下面的代码成功了,谢谢
CurrentUserProperties currentUser = (CurrentUserProperties)_currentUser.GetCurrentUser();
var userId = currentUser.Id;
var username = currentUser.Username;
var forename = currentUser.Forename;
var surname = currentUser.Surname;
在我的 WebApp 项目中,我通过大多数 controller/razor 页面模型方法记录了当前用户的详细信息。我将用于检索当前用户的代码移动到存储库中,并将 return 一个对象移动到调用方法中。
我不确定如何获取对象中 returned 的属性值。
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;
}
}
控制器方法:
object currentUser = _currentUser.GetCurrentUser();
我希望使用尽可能少的代码来获取这些属性的值 returned 鉴于我将在整个应用程序的大多数方法中使用它,谢谢
根据 'Rufus' 的评论,下面的代码成功了,谢谢
CurrentUserProperties currentUser = (CurrentUserProperties)_currentUser.GetCurrentUser();
var userId = currentUser.Id;
var username = currentUser.Username;
var forename = currentUser.Forename;
var surname = currentUser.Surname;