requestDto のプロパティとして使用したいカスタム XML シリアライゼーションとデシリアライゼーションを必要とする型があります。
JSON の場合、JsConfig.SerializeFn を使用できますが、XML 用の同様のフックはありますか?
requestDto のプロパティとして使用したいカスタム XML シリアライゼーションとデシリアライゼーションを必要とする型があります。
JSON の場合、JsConfig.SerializeFn を使用できますが、XML 用の同様のフックはありますか?
ServiceStack は内部で .NET の XML DataContract シリアライザーを使用します。基になる .NET の Framework 実装によって提供されるものを超えてカスタマイズすることはできません。
カスタム リクエストをサポートするために、デフォルトのリクエスト処理をオーバーライドできます。ServiceStack のSerialization and Deserialization wiki ページには、リクエスト処理をカスタマイズするさまざまな方法が示されています。
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 シリアライザーを使用したい場合は、独自のカスタム メディア タイプを登録することで、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);