我的类型需要自定义XML序列化&我希望在requestDto
上用作属性的反序列化对于JSON,我可以使用JsConfig.SerializeFn,是否有类似的XML挂钩?
答案 0 :(得分:4)
ServiceStack使用.NET的XML DataContract序列化程序。除了基础.NET框架实现提供的内容之外,它不可定制。
为了支持自定义请求,您可以覆盖默认请求处理。 ServiceStack的 Serialization and Deserialization wiki page 显示了自定义请求处理的不同方法:
base.RequestBinders.Add(typeof(MyRequest), httpReq => ... requestDto);
告诉ServiceStack跳过反序列化并自行处理,让您的DTO实现IRequiresRequestStream
并自行反序列化请求(在您的服务中):
//Request DTO
public class Hello : IRequiresRequestStream
{
/// <summary>
/// The raw Http Request Input Stream
/// </summary>
Stream RequestStream { get; set; }
}
如果您更喜欢使用其他XML Serializer,则可以通过registering your own Custom Media Type覆盖ServiceStack中的默认内容类型,例如:
string contentType = "application/xml";
var serialize = (IRequest request, object response, Stream stream) => ...;
var deserialize = (Type type, Stream stream) => ...;
//In AppHost.Configure method pass two delegates for serialization and deserialization
this.ContentTypes.Register(contentType, serialize, deserialize);