【发布时间】:2020-12-19 20:58:13
【问题描述】:
我正在创建一个使用泛型的控制器。这个父控制器通过传递它们处理的类的类型以通用方式被其他子控制器继承。父控制器中的操作需要从名为 partitionKey (Cosmos) 的查询参数绑定的参数。现在,与通用控制器一起使用的每个类型参数都具有不同的 partitionKey 属性(尽管都是 Guid,但名称会发生变化)。问题是当API使用者看到“partitionKey”作为查询参数的描述时,他们不知道所有类Guid属性中哪个属性是partitionKey。
我想也许有一种方法可以根据与 partitionKey 对应的属性类上设置的属性动态设置查询参数名称。是否可以在基于控制器的类属性属性中设置查询参数名称?还是有更好的方法?
父控制器
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace x.API.Controllers
{
[ApiController]
[Route("[controller]")]
public class GenericController<T> : ControllerBase
{
[HttpGet("{id}")]
public async Task<ActionResult<T>> Get(Guid id, Guid partitionKey)
{
var item = await GetItemAsync<T>(id, partitionKey);
return Ok(item);
}
儿童控制器
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace x.API.Controllers
{
public class GameController : GenericController<Game>
{
}
}
【问题讨论】:
标签: c# asp.net-core .net-core asp.net-core-webapi