public abstract class BaseController<T> : ApiController
{
protected APIResponseTO<T> _reponse;
protected IHttpActionResult CreateResponse(HttpStatusCode httpStatus, T data)
{
_reponse = new APIResponseTO<T>()
{
HttpStatus = httpStatus,
Data = data
};
return Ok(_reponse);
}
}
现在我希望继承这个类的任何类都可以为T定义多个类型
public class CustomerController : BaseController<T>
{
public IHttpActionResult Get()
{
var customers = _customerService.GetCustomers();
//call Parent Class CreateResponse() to create IHttpActionResult object
//here customers is IEnumerable<Customer>
return CreateResponse(HttpStatusCode.Created, customers)
}
public IHttpActionResult Post([FromBody]Customer customer)
{
var custId= _customerService.AddCustomers();
//call Parent Class CreateResponse() to create IHttpActionResult object
//here customer is integer(Single Object)
return CreateResponse(HttpStatusCode.Created, custId)
}
}
public class CustomerController : BaseController<T> where T : Customer, IEnumerable<Customer>, int
{
}
public IHttpActionResult Post<T>([FromBody]Customer customer)
where T : int
{
var custId= _customerService.AddCustomers();
//call Parent Class CreateResponse() to create IHttpActionResult object
//here customer is integer(Single Object)
return CreateResponse(HttpStatusCode.Created, custId)
}