所以我正在尝试对我们的 MVC4 框架项目的所有 WebAPI 调用进行一般返回。
我遇到的问题是类型object
不能轻易序列化。
所以我们的返回结构是这样的......,
[DataContract]
class UiOutput {
[DataMember("success")]
public bool Success {get;set;};
[DataMember("success")]
public object Data {get;set;};
}
这样每次调用都会返回成功与否以及数据。数据可以是模型数组或其他任何东西。显然,这是一项简单的任务php
,但我们不在那里 :)
Error Three
所以我从网站http://www.johnsoer.com/blog/?tag=the-type-was-not-expected-use-the-xmlinclude-or-soapinclude-attribute读到我遇到的问题- 静态指定未知类型。
所以我想创建一个通用的超类来解决这个问题,除了它如何处理 ViewModels 数组?
[XmlInclude(typeof(MyAwesomeViewModel))]
class SuperType { }
例子:
[DataContract]
class UiOutput {
[DataMember("success")]
public bool Success {get;set;};
[DataMember("success")]
public SuperType Data {get;set;};
}
这将有助于返回说
[DataContract]
class MyAwesomeViewModel {
[DataMember("awesome")]
public bool Awesome {get;set;};
[DataMember("viewModel")]
public string ViewModel {get;set;};
}
但是如果我有一个想要返回array
MyAwesomeViewModel 的控制器,那么我不知道该怎么做!
我的意思是如果有一个控制器像
class MyAwesomeController : ApiController {
public UiOutput ByYear(int year) {
MyAwesomeViewModel[] models = Rep.GetByYear(year);
UiOutput output = new UiOutput();
output.success = true;
output.data = //Todo: Is there a way to overcome?
}
}