- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在努力让 WebApi 中的继承像我想要的那样工作。也许你能给我指出正确的方向?
我的目标是拥有一个通用的 WebApi 项目,它可以在多个其他 WebApi 项目中重复使用。
例如:我有一个可重用的 UserController,它可以处理多个网站的登录。现在我构建了一个新的 WebSite,并将 UserController 添加到新创建的项目中,这很简单。
但现在新网站的要求发生了变化,我需要重载 UserController 方法以反射(reflect)这些变化,而无需修改通用 Controller 。
我想要实现的可以在下面的代码片段中看到(当然这不会编译,因为 C# 提示找不到合适的方法来重载。)
// This belongs to solution "GenericWebApi"
public class LoginRequest
{
public string User { get; set; }
}
public class BaseApiController : ApiController
{
[Route("login")]
public virtual HttpResponseMessage Login(LoginRequest request)
{
return new HttpResponseMessage();
}
}
// This belongs to solution "CarWebsite"
public class CarWebsiteLoginRequest : LoginRequest
{
public string Car { get; set; }
}
[RoutePrefix("api/users")]
public class CarWebsiteApiController : BaseApiController
{
public override HttpResponseMessage Login(CarWebsiteLoginRequest request)
{
// Do some car specific login stuff
return base.Login(request);
}
}
我发现一个可行的解决方案是将“LoginRequest”和“CarWebsiteLoginRequest”替换为“dynamic”,但这感觉完全错误,而且 ModelBinder 当然不会按预期工作。
有什么想法可以解决吗?
提前致谢
最佳答案
您可以使您的 BaseApiController
通用:
public class BaseApiController<TLoginRequest> : ApiController
where TLoginRequest : LoginRequest
{
[Route("login")]
public virtual HttpResponseMessage Login(TLoginRequest request)
{
return new HttpResponseMessage();
}
}
并让您的 CarWebsiteApiController
使用 CarWebsiteLoginRequest
作为通用参数:
public class CarWebsiteApiController : BaseApiController<CarWebsiteLoginRequest>
{
public override HttpResponseMessage Login(CarWebsiteLoginRequest request)
{
// Do some car specific login stuff
return base.Login(request);
}
}
关于c# - Asp.Net WebApi 继承与 BaseController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964179/
默认的 HomeController 类是使用定义的 class HomeController extends BaseController { 但是,当通过 artisan 创建资源 Control
我有一个 BaseController,如下所示: public class BaseController : Controller { string ApplicationName;
我有一个 basecontroller,其属性如下: public class BaseController : Controller { public User CurrentUser {g
我有以下 BaseApiController: public class BaseApiController : ApiController { public readonly Current
我有一个定义如下的基本 Controller ,但是采用 ISiteService 的构造函数永远不会执行: public class BaseController : Controller {
我已经在 Silex 1.3.4 中创建了一个简单的应用程序,我想要一个基本 Controller ,它有一个接受 $app 和 $request 的 __construct 方法。所有继承的 Con
我有一类属性,这些属性是从我需要在我的 MVC 应用程序的每个 View 上都可用的服务中设置的。 因此,我创建了一个“基础 View 模型”,我的 View 模型将从中继承。 public clas
我应该创建一个包含多个部分的网站。这些部分的功能和 View 完全相同,但我想要不同的 URL,例如 //localhost:111/Works/索引 //localhost:111/OldJobs/
我有一个与 Entity Framework 通信的基础 Controller 。我正在创建一个 dbContext 来与基本 Controller 中的实体对话。当我将家庭 Controller 继
在我的 Global.asax 中,我在 Session_Start() 中有这段代码: UserIntranet user = new UserIntranet(); user.Login = th
我有一个这样的管理命名空间: namespace :admin do resources :users resources :base end 目录结构如下: /app/con
我需要所有 Controller 中的一些通用行为。有一个 BaseController 并让所有 Controller 都扩展该类是个好主意吗?如果是这样,避免 Fatal error: Class
我看了更多关于 MVC 的教程。但我不明白,人们使用“BaseController”做什么?在一个项目中,有人用它来进行所有 Controller 之间的通信。在其他项目中有人用于获取日志。你能给我解
我正在尝试构建我的 Laravel 4 站点,以便 (1) 主要应用程序组的组件( Controller / View /等)耦合在一起,以及 (2) Laravel 的支持代码位于我的 Web 服务
我需要执行以下操作:我已经准备好一些 Controller 并正在运行,但现在我想创建一个 BaseController。我的每个 Controller 都应该像这样继承它: public class
我目前正在努力让 WebApi 中的继承像我想要的那样工作。也许你能给我指出正确的方向? 我的目标是拥有一个通用的 WebApi 项目,它可以在多个其他 WebApi 项目中重复使用。 例如:我有一个
我想重构我的基本 CRUD 操作,因为它们非常重复,但我不确定最好的方法。我所有的 Controller 都继承了 BaseController,它看起来像这样: public class BaseC
我正在尝试在所有 ASP.Net MVC Controller 中共享我的 IMapper Mapper 静态类。但是不知道如何创建从基本 Controller 派生的 Controller 。 我尝
我在 app/controllers/v1/white_label_api 中创建 Controller class Api::WhiteLabel::V1::BaseController < App
我创建了一个 BaseController,我将它混入其他 Controller 。 例子: class BaseController () { def somemethod () { r
我是一名优秀的程序员,十分优秀!