Asp.Net WebApi Héritage avec un BaseController

Je suis actuellement des difficultés pour obtenir l'héritage WebApi de travail comme je le voudrais.
Peut-être que vous pouvez me pointer dans la bonne direction?

Mon but est d'avoir un générique WebApi projet, qui peut être réutilisée dans plusieurs autres WebApi projets.

Par exemple: j'ai une réutilisables UserController qui peut gérer la connexion à plusieurs Sites web. Maintenant, je créer un nouveau Site web simple et ajouter le UserController pour le projet nouvellement créé, qui fonctionne simplement.

Mais maintenant l'exigence pour le nouveau Site web et j'ai besoin de surcharger le UserController méthodes pour tenir compte de ces changements, sans modifier le contrôleur générique.

Ce que je veux atteindre peut être vu dans l'extrait de code suivant (bien sûr, cela ne compile pas car C# se plaint pas de méthode adéquate pour la surcharge trouvé.)

//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);
    }
}

Une solution que j'ai trouvé de travail a été de remplacer le "LoginRequest" et "CarWebsiteLoginRequest" avec "dynamique", mais qui se sent tout simplement mauvais, et le ModelBinder de cours ne sera pas fonctionner comme prévu.

Des idées comment vous résoudre ce problème?

Merci d'avance

OriginalL'auteur coalmee | 2015-01-15