继承和ASP.NET Web API的JSON格式化程序
设想一个简单的控制器操作IEnumerable<BaseType> Get()
。 它返回所有派生自BaseType的不同类型的枚举。
当客户端请求XML时,结果如下所示:
<ArrayOfBaseType>
<BaseType i:type="DerivedType1"><A>value</A></BaseType>
<BaseType i:type="DerivedType2"><B>value</B></BaseType>
<BaseType i:type="DerivedType3"><C>value</C></BaseType>
</ArrayOfBaseType>
如您所见,派生类的类型在i:type
属性中传输。
但是,如果客户端请求JSON,则缺少此信息:
[
{"A":"value"},
{"B":"value"},
{"C":"value"}
]
如何解决这个问题?
以下更改是必要的:
在WebApiConfig.cs中,需要添加以下行:
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling =
TypeNameHandling.Auto;
这将在需要时自动产生新的属性$type
。
如果你写下你的课程:
public class MyClass
{
// properties here
public string IType
{
get
{
return this.GetType().Name;
}
set { }
}
}
也许,它会帮助你
链接地址: http://www.djcxy.com/p/64227.html