我正在询问是否有人知道是否有可能将一个继承自抽象类的具体类传入Web Api.
例如:
public abstract class A{ A(); } public class B : A{ } [POST("api/Request/{a}")] public class Request(A a) { }
目前我已经环顾四周了,大多数解决方案似乎说使用TypeNameHandling将会起作用.
JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
但是不是这样.此外,我的模型正在从控制台应用程序传递到webapi.我已经读过,我可以反序列化json对象,并尝试了这几次,我决定这不会工作.
我已经考虑创建一个客户模型绑定,但是,我不想使我的应用程序更加复杂,它必须是.目前,我从抽象类继承了3个模型,但可能在将来扩展.您可能会注意到,添加自定义模型绑定器可能需要多个绑定,除非有一种方法为所有类型的抽象类制作一个绑定器通用.
要在我的控制台应用程序中扩展,我已经实例化了类b,然后将其传递给ObjectContent,然后再发布到我的webapi
item = B(); //serialize and post to web api MediaTypeFormatter formatter; JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto; formatter = jsonFormatter; _content = new ObjectContent<A>(item,formatter); var response = _client.PostAsync("api/Request",_content).Result;
当webapi操作被调用时,对象为null