これは私の補足情報は、@スラヴァ-utesinov accepted answer (in this QA)のおかげです。
実際には内部的にABPはDTOのシリアル化を扱うときにobject
を使用すると思われますので、前提は確実です。
ABPソースからいくつかのサンプルコード:
public static string ToJsonString(this object obj, bool camelCase = false, bool indented = false)
{ ... }
protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior)
{ ... }
だから成功した後、私は試してみると隠すオリジナルのErrorInfoメンバーに問題を強化しました。今、ABPがJson.NETを使用していることを知り、私はConditional Property Serializationの機能を発見しました。通常、bool ShouldSerialize[member name]()
を実装することで、シリアライザにプロパティを無視するように指示できます。
だから私は、コンセプトコードの次の証明になってしまった:
public class ErrorInfoEx : ErrorInfo
{
public new string Details { get; set; }
public bool ShouldSerializeDetails() { return false; }
public ErrorInfoEx(int code, string message) : base(code, message) { }
public string MyField { get; set; }
}
嘆願を使用すると、基本クラスのメンバを無視するように、基本クラスの実装を置き換える必要がありますいくつかの理由で、注意してください。
JSONの結果として、「詳細」プロパティは表示されませんが、「myField」が存在します。
{
"success":false,
"result":null,
"error":
{
"myField":"123",
"code":420,
"message":"Validation failed",
"validationErrors":
[{
"message":"'Order Number' should not be empty.",
"members":["OrderNumber"]
}]
},
"unAuthorizedRequest":false
}