【发布时间】:2018-04-14 13:21:17
【问题描述】:
我正在我的网站中制作一个小型应用程序,以使用 API 请求获取用户信息。
[HttpGet("GetUserInfo/{user_id}/{fields?}")]
public IActionResult GetUserInfo(string user_id, params string[] fields)
{
var userProfile = _userManager.GetUserProfile(user_id);
if (userProfile == null)
{
return Ok(null);
}
var userInfo = new
{
id = userProfile.UserId,
email = userProfile.Email,
name = userProfile.Name,
// I don't want to define a null property here:
picture_url = fields.Contains("picture_url") ? "path" : null
};
if (fields.Contains("picture_url"))
{
userInfo.picture_url = "";
}
return Ok(userInfo);
}
当请求有效时,它会返回一个 JSON 对象,默认包含 3 个属性:id、email 和 name。
现在,我想检查请求是否要获取有关此用户的更多信息,就像 picture_url。所以,我试过了:
if (fields.Contains("picture_url"))
{
// error in this line
userInfo.picture_url = "path";
}
'' 不包含对 'picture_url' 的定义,并且没有扩展方法 'picture_url' 接受类型为 '' 可以找到(您是否缺少 using 指令或程序集引用?)
如何动态地向匿名对象添加一些属性?
【问题讨论】:
-
匿名类型是不可变的,只能在创建实例时设置属性。
-
使用
dynamic而不是var -
@SebastianHofmann
dynamic几乎从来都不是正确的选择,而且几乎总是在裂开的伤口上贴膏药。 -
dynamic几乎始终是为对象动态添加属性时的正确选择,该对象将由动态语言(如 JavaScript)使用... -
@StephenKennedy 我不同意,我宁愿选择
Dictionary
标签: c# asp.net-core asp.net-core-webapi