我有一个使用 ASP.NET MVC 6 的 .NET Core Web 应用程序。我有一个用于最常见的 CRUD 操作的通用 API Controller 。问题是我有多种不同类型的 ID。例如,我同时拥有 int 和 Guid。
我的通用 Get Controller 如下所示:
// GET api/values/5
[HttpGet("api/[controller]/{id}")]
public virtual async Task<IEntity> Get(object id)
{
var myEntity = await _myRepository.FindAsync(id);
if (myEntity == null)
return ItemNotFound();
return myEntity;
}
如果我将方法参数更改为接受一个 int 而不是一个对象,它就可以正常工作。但是,如果我将对象转换为 int,则会得到无效转换异常。有没有办法成功地将对象转换为我期望的样子?
请您参考如下方法:
我是否认同你的设计,不在本问答范围内。但要解决您的问题,您可以这样做:
public virtual async Task<IEntity> Get(string id)
{
var parsedId;
if (int.TryParse(id, out parsedId))
{
// It was an integer
}
else
{
if (Guid.TryParse(id, out parsedId))
{
// It was a Guid
}
else
{
// It was neither so what do you want to do?
}
}
}
