Ich habe Datenverträge geschaffen, wie unten mit Vererbung: -C# REST API polymorpher Rückgabetyp
[DataContract(Name = "Animal")]
public class Animal { ... }
[DataContract(Name = "Dog ")]
public class Dog : Animal { // Has some Dog specific member properties }
[DataContract(Name = "Cat ")]
public class Cat : Animal { // Has some Cat specific member properties }
Und ich bin mit ASP.NET WebAPI einen REST-API zur Verfügung zu stellen wie:
[HttpGet]
public Task<Animal> Get(string type)
{
switch(type)
{
case "dog":
Dog dog = GetDogDetails();
return Task.FromResult(dog);
break;
case "cat":
Cat cat = GetCatDetails();
return Task.FromResult(cat);
break:
}
}
Ich kann die jeweiligen Tierarten nicht zurückgeben. Ich erhalte den folgenden Fehler: - "Hund kann nicht implizit in Tier konvertiert werden".
Auch ist diese polymorphe Antwort eine gute Sache wie REST API-Standards.
Was auch immer der Fall ist, das ist eine schreckliche Fehlermeldung. – InBetween
Wenn Sie JSON verwenden, vergessen Sie Datenverträge für den Alptraum, den sie sind, und geben Sie einfach 'dynamic' von Ihrem Controller zurück. Dann können Sie alles zurückgeben und es wird dem Kunden so gut wie möglich serialisiert. – zaitsman
@zaitsman Ich würde nicht empfehlen, dynamische Antwort zu verwenden, falls erforderlich, verwenden Sie IHttpActionResult als VladStryapko in seiner Antwort. –