I am trying to pass an interface parameter as part of my request object for POST and PUT APIs I have created, but I am not sure how to add a JSON deserializer to be able to specify which concrete class to use for which service. How do I specify that I want to use FooRequestData for one and FooOtherRequestData for the other?
[ApiController]
[Route("api/[controller]")]
public class FooController
{
// POST api/<APIController>
[HttpPost]
public FooResponse Post(FooRequest request)
{
return FooService.Post(request);
}
// PUT api/<APIController>
[HttpPut]
public FooResponse Put(FooRequest request)
{
return FooService.Put(request);
}
}
public class FooRequest : IRequest<Foo>
{
public IRequestData RequestData { get; set; }
}
public class FooRequestData : IRequestData
{
public string Boo { get; set; }
}
public class FooOtherRequestData : IRequestData
{
public string Hoo { get; set; }
}