在数据处理领域中,
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中文网其他相关文章!