在數據處理領域中,
public class PersonConverter : JsonCreationConverter<Person> { protected override Person Create(Type objectType, JObject jObject) { if (FieldExists("Skill", jObject)) { return new Artist(); } else if (FieldExists("Department", jObject)) { return new Employee(); } else { return new Person(); } } private bool FieldExists(string fieldName, JObject jObject) { return jObject[fieldName] != null; } } public abstract class JsonCreationConverter<T> : JsonConverter { protected abstract T Create(Type objectType, JObject jObject); // ... Remaining code omitted for brevity }
問題語句
> >考慮以下方案:您有一個基礎類,與從中繼承的子類(員工和藝術家)的人。您想將包含這些子類實例的JSON陣列化為列表&gt;。但是,提供的JSON.NET CustomCreationConverter不足,因為它缺乏基於JSON結構確定正確類型的能力。 解決方案:Overriding readjson()為了克服這一限制,我們需要對jsonconverter進行亞類並覆蓋readjson()方法。在此方法中,我們可以從JSON閱讀器中獲得一項驗證,並將其傳遞給由我們派生的轉換器類實現的抽象創建方法。 jobject and type Analysis以上是自定義JSON.NET轉換器如何解決多態性的挑戰挑戰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!