我目前正在努力在WebApi中繼承工作,就像我想。 也許你可以指出我正確的方向?Asp.Net WebApi繼承與基本控制器
我的目標是擁有一個通用的WebApi項目,它可以在多個其他WebApi項目中重用。
例如:我有一個可重用的UserController,它可以處理多個WebSites的登錄。現在我構建一個新的WebSite並簡單地將UserController添加到新創建的項目中,該項目很簡單。
但是現在對新網站的要求發生了變化,我需要重載UserController方法以反映這些更改而不修改通用控制器。
我想實現可以在下面的代碼片段中看到什麼(當然這不能編譯,因爲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」,但感覺簡直是錯誤的,ModelBinder當然不會按預期工作。
任何想法你會如何解決?
在此先感謝
感謝您的建議,這似乎是一個不錯的方法。 但是我的BaseApiController會有> 10-15個WebApi操作。所以我需要使它BaseApiController。你還有其他方式嗎? –
coalmee