在当前的WebApi项目中,我有一个通用控制器:
public class EntityController<T>
where T : Entity { }
如果路由中的控制器名称与类型名称匹配,则在运行时使用指定的类型创建。
例如:/api/user/
初始化控制器EntityController<User>
。
为实现这一目标,我使用了自定义ControllerSelector:
internal class ControllerSelector : DefaultHttpControllerSelector
{
... other members omitted for clarity
public override HttpControllerDescriptor SelectController(HttpRequestMessage request)
{
string controllerName = base.GetControllerName(request);
HttpControllerDescriptor descriptor;
Type controllerType = typeof(EntityController<>).MakeGenericType(_entityTypes[controllerName]);
descriptor = new HttpControllerDescriptor(_configuration, controllerName, controllerType);
_descriptorCache.TryAdd(controllerName, descriptor);
return descriptor;
}
... other members omitted for clarity
}
看来这种方法无法在.Net Core中运行。
我已经找到并尝试了这些示例,但它们似乎无法解决我的问题:
因此,使用.Net Core,如何控制控制器的创建以动态创建通用控制器?