protected virtual JsonContract CreateContract(Type objectType) { Type type = Class194.smethod_11(objectType); if (smethod_0(objectType)) { return(this.CreatePrimitiveContract(objectType)); } if (Class139.smethod_1(type) == null) { if (Class139.smethod_2(type) != null) { return(this.CreateArrayContract(objectType)); } if (Class139.smethod_3(type) != null) { return(this.CreateDictionaryContract(objectType)); } if ((type == typeof(JToken)) || type.IsSubclassOf(typeof(JToken))) { return(this.CreateLinqContract(objectType)); } if (Class191.smethod_2(type)) { return(this.CreateDictionaryContract(objectType)); } if (typeof(IEnumerable).IsAssignableFrom(type)) { return(this.CreateArrayContract(objectType)); } if (smethod_2(type)) { return(this.CreateStringContract(objectType)); } if (!this.IgnoreSerializableInterface && typeof(ISerializable).IsAssignableFrom(type)) { return(this.CreateISerializableContract(objectType)); } if (typeof(IDynamicMetaObjectProvider).IsAssignableFrom(type)) { return(this.CreateDynamicContract(objectType)); } if (smethod_1(type)) { return(this.CreatePrimitiveContract(type)); } } return(this.CreateObjectContract(objectType)); }
protected virtual JsonObjectContract CreateObjectContract(Type objectType) { JsonObjectContract contract = new JsonObjectContract(objectType); this.method_7(contract); bool ignoreSerializableAttribute = this.IgnoreSerializableAttribute; contract.MemberSerialization = Class139.smethod_7(contract.type_0, ignoreSerializableAttribute); contract.Properties.smethod_1 <JsonProperty>(this.CreateProperties(contract.type_0, contract.MemberSerialization)); JsonObjectAttribute attribute = Class139.smethod_1(contract.type_0); if (attribute != null) { contract.ItemRequired = attribute.nullable_4; } ConstructorInfo constructor = this.method_4(contract.type_0); if (constructor != null) { contract.OverrideConstructor = constructor; contract.ConstructorParameters.smethod_1 <JsonProperty>(this.CreateConstructorParameters(constructor, contract.Properties)); } else if (contract.MemberSerialization == MemberSerialization.Fields) { if (Class139.Boolean_1) { contract.DefaultCreator = new Func <object>(contract.method_5); } } else if ((contract.DefaultCreator == null) || contract.DefaultCreatorNonPublic) { ConstructorInfo info2 = this.method_5(contract.type_0); if (info2 != null) { contract.ParametrizedConstructor = info2; contract.ConstructorParameters.smethod_1 <JsonProperty>(this.CreateConstructorParameters(info2, contract.Properties)); } } contract.ExtensionDataSetter = this.method_3(contract.type_0); return(contract); }