I want to have a modular EmbedIO setup with a dynamic list of unknown web API controller types. I thought it'd be easy :( But at the moment I'm stuck at registering the web APIs:
// Some APIs to setup at the EmbedIO webserver in "Server"
Dictionary<string, WebApiController> apis = ...;
// Register the APIs at the webserver
foreach(KeyValuePair<string, WebApiController> kvp in apis)
{
// Exception: "Controller type must be a subclass of WebApiController."
Server.WithWebApi(kvp.Key, m => m.WithController(() => kvp.Value));
}
The problem is: The factory method needs to return the final type of the controller object. Everything else seems to fail.
I tried with dynamic
instead of WebApiController
or returning object
and giving the type as first parameter for WithController
- whatever I tried, it resulted in an exception; Or when I use a class WebApiControllerWrapper : WebApiController
and a Dictionary<string, WebApiControllerWrapper>
, the exported controller methods of the final type are missing, because they're not defined in WebApiControllerWrapper
.
It seems the only way is to use reflection for the generic call of WithController
- or does anyone know another working solution (I'm in .NET Standard 2.1)?