Esempio n. 1
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute objectAttribute = GetCachedAttribute <JsonObjectAttribute>(objectType);

            if (objectAttribute != null)
            {
                return(objectAttribute.MemberSerialization);
            }

#if !NET20
            DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
            if (dataContractAttribute != null)
            {
                return(MemberSerialization.OptIn);
            }
#endif

#if !(DOTNET || PORTABLE40 || PORTABLE)
            if (!ignoreSerializableAttribute)
            {
                SerializableAttribute serializableAttribute = GetCachedAttribute <SerializableAttribute>(objectType);
                if (serializableAttribute != null)
                {
                    return(MemberSerialization.Fields);
                }
            }
#endif

            // the default
            return(MemberSerialization.OptOut);
        }
Esempio n. 2
0
        private void SetJsonModel()
        {
            Type type = GetType();
            JsonObjectAttribute attr = type.GetCustomAttribute <JsonObjectAttribute>();

            if (!string.IsNullOrEmpty(attr?.Id))
            {
                string filename = attr.Id;
                if (!filename.EndsWith(".json"))
                {
                    filename += ".json";
                }
                this._filePath = $@"{SettingsStore.StoragePath}/{filename}";
                if (File.Exists(this._filePath))
                {
                    string fileText = File.ReadAllText(this._filePath);
                    _jsonModel = JObject.Parse(fileText);
                }
            }
            if (_jsonModel == null)
            {
                _jsonModel    = new JObject();
                _initializing = true;
                Init();
                _initializing = false;
                SaveJsonModel();
            }
        }
Esempio n. 3
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute objectAttribute = GetCachedAttribute <JsonObjectAttribute>(objectType);

            if (objectAttribute != null)
            {
                return(objectAttribute.MemberSerialization);
            }

            DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);

            if (dataContractAttribute != null)
            {
                return(MemberSerialization.OptIn);
            }

            if (!ignoreSerializableAttribute)
            {
                SerializableAttribute serializableAttribute = GetCachedAttribute <SerializableAttribute>(objectType);
                if (serializableAttribute != null)
                {
                    return(MemberSerialization.Fields);
                }
            }

            // the default
            return(MemberSerialization.OptOut);
        }
Esempio n. 4
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute objectAttribute = GetCachedAttribute <JsonObjectAttribute>(objectType);

            if (objectAttribute != null)
            {
                return(objectAttribute.MemberSerialization);
            }

#if HAVE_DATA_CONTRACTS
            DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
            if (dataContractAttribute != null)
            {
                return(MemberSerialization.OptIn);
            }
#endif

#if HAVE_BINARY_SERIALIZATION
            if (!ignoreSerializableAttribute && IsSerializable(objectType))
            {
                return(MemberSerialization.Fields);
            }
#endif

            // the default
            return(MemberSerialization.OptOut);
        }
Esempio n. 5
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);

            if (objectAttribute != null)
            {
                return(objectAttribute.MemberSerialization);
            }

#if !PocketPC && !NET20
            DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
            if (dataContractAttribute != null)
            {
                return(MemberSerialization.OptIn);
            }
#endif

#if !(SILVERLIGHT || NETFX_CORE || PORTABLE)
            if (!ignoreSerializableAttribute)
            {
                SerializableAttribute serializableAttribute = GetSerializableAttribute(objectType);
                if (serializableAttribute != null)
                {
                    return(MemberSerialization.Fields);
                }
            }
#endif

            // the default
            return(MemberSerialization.OptOut);
        }
//#if !NET20
//        public static DataContractAttribute GetDataContractAttribute(Type type)
//        {
//            // DataContractAttribute does not have inheritance
//            Type currentType = type;

//            while (currentType != null)
//            {
//                DataContractAttribute result = CachedAttributeGetter<DataContractAttribute>.GetAttribute(currentType);
//                if (result != null)
//                    return result;

//                currentType = currentType.BaseType();
//            }

//            return null;
//        }

//        public static DataMemberAttribute GetDataMemberAttribute(MemberInfo memberInfo)
//        {
//            // DataMemberAttribute does not have inheritance

//            // can't override a field
//            if (memberInfo.MemberType() == MemberTypes.Field)
//                return CachedAttributeGetter<DataMemberAttribute>.GetAttribute(memberInfo);

//            // search property and then search base properties if nothing is returned and the property is virtual
//            PropertyInfo propertyInfo = (PropertyInfo)memberInfo;
//            DataMemberAttribute result = CachedAttributeGetter<DataMemberAttribute>.GetAttribute(propertyInfo);
//            if (result == null)
//            {
//                if (propertyInfo.IsVirtual())
//                {
//                    Type currentType = propertyInfo.DeclaringType;

//                    while (result == null && currentType != null)
//                    {
//                        PropertyInfo baseProperty = (PropertyInfo)ReflectionUtils.GetMemberInfoFromType(currentType, propertyInfo);
//                        if (baseProperty != null && baseProperty.IsVirtual())
//                            result = CachedAttributeGetter<DataMemberAttribute>.GetAttribute(baseProperty);

//                        currentType = currentType.BaseType();
//                    }
//                }
//            }

//            return result;
//        }
//#endif

        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);

            if (objectAttribute != null)
            {
                return(objectAttribute.MemberSerialization);
            }

//#if !NET20
//            DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
//            if (dataContractAttribute != null)
//                return MemberSerialization.OptIn;
//#endif

#if !(NETFX_CORE || PORTABLE40 || PORTABLE)
            if (!ignoreSerializableAttribute)
            {
                SerializableAttribute serializableAttribute = GetSerializableAttribute(objectType);
                if (serializableAttribute != null)
                {
                    return(MemberSerialization.Fields);
                }
            }
#endif

            // the default
            return(MemberSerialization.OptOut);
        }
Esempio n. 7
0
        private static OpenCageResults Lookup(string payload)
        {
            OpenCageResults resp;

            try
            {
                string request = String.Format("{0}{1}&key={2}&pretty=1&no_annotations=1", _baseUrl, payload, _key);

                WebClient client = new WebClient();
                client.Encoding = Encoding.UTF8;
                string response = client.DownloadString(request);
                response = response.Replace("__", "");
                //response = response.Replace(",", "+");

                //JavaScriptSerializer jss = new JavaScriptSerializer();
                //resp = jss.Deserialize<OpenCageResults>(response);
                JsonObjectAttribute joa = new JsonObjectAttribute(response);
                resp = JsonConvert.DeserializeObject <OpenCageResults>(joa.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(null);
            }
            return(resp);
        }
Esempio n. 8
0
        /// <summary>
        /// Generate enumeration documentation
        /// </summary>
        private static void GenerateEnumerationDocumentation(TextWriter writer, Type type, XmlDocument xmlDoc, ConsoleParameters parms)
        {
            var jobject = type.GetCustomAttribute <JsonObjectAttribute>();

            if (jobject == null)
            {
                jobject = new JsonObjectAttribute(type.Name);
            }

            writer.WriteLine("// {0}", type.AssemblyQualifiedName);
            writer.WriteLine("// if(!{0})", jobject.Id);

            writer.WriteLine("/**");
            writer.WriteLine(" * @enum {string}");
            writer.WriteLine(" * @public");
            writer.WriteLine(" * @readonly");

            // Lookup the summary information
            var typeDoc = xmlDoc.SelectSingleNode(String.Format("//*[local-name() = 'member'][@name = 'T:{0}']", type.FullName));

            if (typeDoc != null)
            {
                if (typeDoc.SelectSingleNode(".//*[local-name() = 'summary']") != null)
                {
                    writer.WriteLine(" * @summary {0}", typeDoc.SelectSingleNode(".//*[local-name() = 'summary']").InnerText.Replace("\r\n", ""));
                }
                if (typeDoc.SelectSingleNode(".//*[local-name() = 'remarks']") != null)
                {
                    writer.WriteLine(" * @description {0}", typeDoc.SelectSingleNode(".//*[local-name() = 'remarks']").InnerText.Replace("\r\n", ""));
                }
                if (typeDoc.SelectSingleNode(".//*[local-name() = 'example']") != null)
                {
                    writer.WriteLine(" * @example {0}", typeDoc.SelectSingleNode(".//*[local-name() = 'example']").InnerText.Replace("\r\n", ""));
                }
            }
            writer.WriteLine(" */");
            writer.WriteLine("const {0} = {{ ", jobject.Id);

            // Enumerate fields
            foreach (var fi in type.GetFields(BindingFlags.Public | BindingFlags.Static))
            {
                writer.WriteLine("\t/** ");
                writer.Write("\t * ");
                typeDoc = xmlDoc.SelectSingleNode(String.Format("//*[local-name() = 'member'][@name = 'F:{0}.{1}']", fi.DeclaringType.FullName, fi.Name));
                if (typeDoc != null)
                {
                    if (typeDoc.SelectSingleNode(".//*[local-name() = 'summary']") != null)
                    {
                        writer.Write(typeDoc.SelectSingleNode(".//*[local-name() = 'summary']").InnerText.Replace("\r\n", ""));
                    }
                }
                writer.WriteLine();
                writer.WriteLine("\t */");

                writer.WriteLine("\t{0} : '{1}',", fi.Name, fi.GetValue(null));
            }

            writer.WriteLine("}}  // {0} ", jobject.Id);
        }
Esempio n. 9
0
        public JsonObjectAttribute New(string id)
        {
            JsonObjectAttribute objectAttribute = new JsonObjectAttribute();

            XJsonReflection.Api.ContainerAttributes.New(objectAttribute, id);

            return(objectAttribute);
        }
Esempio n. 10
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute jsonObjectAttribute = JsonTypeReflector.GetJsonObjectAttribute(objectType);

            if (jsonObjectAttribute != null)
            {
                return(jsonObjectAttribute.MemberSerialization);
            }
            return(!ignoreSerializableAttribute && JsonTypeReflector.GetSerializableAttribute(objectType) != null ? MemberSerialization.Fields : MemberSerialization.OptOut);
        }
Esempio n. 11
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType)
        {
            JsonObjectAttribute objectAttribute = GetJsonContainerAttribute(objectType) as JsonObjectAttribute;

            if (objectAttribute == null)
            {
                return(MemberSerialization.OptOut);
            }

            return(objectAttribute.MemberSerialization);
        }
Esempio n. 12
0
    protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
    {
        JsonProperty        prop = base.CreateProperty(member, memberSerialization);
        JsonObjectAttribute attr = prop.DeclaringType.GetCustomAttribute <JsonObjectAttribute>();

        if (attr != null && attr.MemberSerialization == MemberSerialization.Fields &&
            member.GetCustomAttribute <CompilerGeneratedAttribute>() != null)
        {
            prop.Ignored = true;
        }
        return(prop);
    }
Esempio n. 13
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType)
        {
            JsonObjectAttribute jsonObjectAttribute = JsonTypeReflector.GetJsonObjectAttribute(objectType);

            if (jsonObjectAttribute != null)
            {
                return(jsonObjectAttribute.MemberSerialization);
            }
            if (JsonTypeReflector.GetDataContractAttribute(objectType) != null)
            {
                return(MemberSerialization.OptIn);
            }
            return(MemberSerialization.OptOut);
        }
Esempio n. 14
0
        public static MemberSerialization GetObjectMemberSerialization(
            Type objectType,
            bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute cachedAttribute =
                JsonTypeReflector.GetCachedAttribute <JsonObjectAttribute>((object)objectType);

            if (cachedAttribute != null)
            {
                return(cachedAttribute.MemberSerialization);
            }
            return(!ignoreSerializableAttribute && JsonTypeReflector.IsSerializable((object)objectType)
        ? MemberSerialization.Fields
        : MemberSerialization.OptOut);
        }
Esempio n. 15
0
        private string GetRootProperty(ModelBindingContext bindingContext)
        {
            string rootProperty = null;

            if (bindingContext.ModelState.IsValid)
            {
                JsonObjectAttribute jsonObjectAttribute = ReflectionHelper.GetJsonObjectAttribute(typeof(T));

                if (jsonObjectAttribute != null)
                {
                    rootProperty = jsonObjectAttribute.Title;
                }
            }

            return(rootProperty);
        }
        public static MemberSerialization GetObjectMemberSerialization(Type objectType)
        {
            JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);

            if (objectAttribute == null)
            {
                return(MemberSerialization.OptOut);
            }

            if (objectAttribute != null)
            {
                return(objectAttribute.MemberSerialization);
            }

            // DataContract attribute automatically defaults to opt in.
            return(MemberSerialization.OptIn);
        }
Esempio n. 17
0
        protected virtual JsonObjectContract CreateObjectContract(Type objectType)
        {
            JsonObjectContract jsonObjectContract = new JsonObjectContract(objectType);

            this.InitializeContract(jsonObjectContract);
            bool ignoreSerializableAttribute = this.IgnoreSerializableAttribute;

            jsonObjectContract.MemberSerialization = JsonTypeReflector.GetObjectMemberSerialization(jsonObjectContract.NonNullableUnderlyingType, ignoreSerializableAttribute);
            jsonObjectContract.Properties.AddRange(this.CreateProperties(jsonObjectContract.NonNullableUnderlyingType, jsonObjectContract.MemberSerialization));
            JsonObjectAttribute jsonObjectAttribute = JsonTypeReflector.GetJsonObjectAttribute(jsonObjectContract.NonNullableUnderlyingType);

            if (jsonObjectAttribute != null)
            {
                jsonObjectContract.ItemRequired = jsonObjectAttribute._itemRequired;
            }
            ConstructorInfo attributeConstructor = this.GetAttributeConstructor(jsonObjectContract.NonNullableUnderlyingType);

            if (attributeConstructor != null)
            {
                jsonObjectContract.OverrideConstructor = attributeConstructor;
                jsonObjectContract.ConstructorParameters.AddRange(this.CreateConstructorParameters(attributeConstructor, jsonObjectContract.Properties));
            }
            else if (jsonObjectContract.MemberSerialization == MemberSerialization.Fields)
            {
                if (JsonTypeReflector.FullyTrusted)
                {
                    jsonObjectContract.DefaultCreator = new Func <object>(jsonObjectContract.GetUninitializedObject);
                }
            }
            else if (jsonObjectContract.DefaultCreator == null || jsonObjectContract.DefaultCreatorNonPublic)
            {
                ConstructorInfo parametrizedConstructor = this.GetParametrizedConstructor(jsonObjectContract.NonNullableUnderlyingType);
                if (parametrizedConstructor != null)
                {
                    jsonObjectContract.ParametrizedConstructor = parametrizedConstructor;
                    jsonObjectContract.ConstructorParameters.AddRange(this.CreateConstructorParameters(parametrizedConstructor, jsonObjectContract.Properties));
                }
            }
            MemberInfo extensionDataMemberForType = this.GetExtensionDataMemberForType(jsonObjectContract.NonNullableUnderlyingType);

            if (extensionDataMemberForType != null)
            {
                DefaultContractResolver.SetExtensionDataDelegates(jsonObjectContract, extensionDataMemberForType);
            }
            return(jsonObjectContract);
        }
Esempio n. 18
0
        public static MemberSerialization smethod_7(Type type_1, bool bool_0)
        {
            JsonObjectAttribute attribute = smethod_1(type_1);

            if (attribute != null)
            {
                return(attribute.MemberSerialization);
            }
            if (smethod_5(type_1) != null)
            {
                return(MemberSerialization.OptIn);
            }
            if (!bool_0 && (smethod_4(type_1) != null))
            {
                return(MemberSerialization.Fields);
            }
            return(MemberSerialization.OptOut);
        }
Esempio n. 19
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType)
        {
            JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);

            if (objectAttribute == null)
            {
                DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);

                if (dataContractAttribute != null)
                {
                    return(MemberSerialization.OptIn);
                }

                return(MemberSerialization.OptOut);
            }

            return(objectAttribute.MemberSerialization);
        }
Esempio n. 20
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute cachedAttribute = JsonTypeReflector.GetCachedAttribute <JsonObjectAttribute>(objectType);

            if (cachedAttribute != null)
            {
                return(cachedAttribute.MemberSerialization);
            }
            if (JsonTypeReflector.GetDataContractAttribute(objectType) != null)
            {
                return(MemberSerialization.OptIn);
            }
            if (!ignoreSerializableAttribute && JsonTypeReflector.GetCachedAttribute <SerializableAttribute>(objectType) != null)
            {
                return(MemberSerialization.Fields);
            }
            return(MemberSerialization.OptOut);
        }
Esempio n. 21
0
    // Token: 0x060009F6 RID: 2550 RVA: 0x0003868C File Offset: 0x0003688C
    public static MemberSerialization smethod_4(Type type_0, bool bool_0)
    {
        JsonObjectAttribute jsonObjectAttribute = Class124.smethod_0 <JsonObjectAttribute>(type_0);

        if (jsonObjectAttribute != null)
        {
            return(jsonObjectAttribute.MemberSerialization);
        }
        if (Class124.smethod_2(type_0) != null)
        {
            return(MemberSerialization.OptIn);
        }
        if (!bool_0 && Class124.smethod_15(type_0))
        {
            return(MemberSerialization.Fields);
        }
        return(MemberSerialization.OptOut);
    }
        /// <summary>
        /// Creates a <see cref="JsonObjectContract"/> for the given type.
        /// </summary>
        /// <param name="objectType">Type of the object.</param>
        /// <returns>A <see cref="JsonObjectContract"/> for the given type.</returns>
        protected virtual JsonObjectContract CreateObjectContract(Type objectType)
        {
            JsonObjectContract contract = new JsonObjectContract(objectType);

            InitializeContract(contract);

            bool ignoreSerializableAttribute;

#if !(SILVERLIGHT || NETFX_CORE || PORTABLE)
            ignoreSerializableAttribute = IgnoreSerializableAttribute;
#else
            ignoreSerializableAttribute = true;
#endif

            contract.MemberSerialization = JsonTypeReflector.GetObjectMemberSerialization(contract.NonNullableUnderlyingType, ignoreSerializableAttribute);
            contract.Properties.AddRange(CreateProperties(contract.NonNullableUnderlyingType, contract.MemberSerialization));

            JsonObjectAttribute attribute = JsonTypeReflector.GetJsonObjectAttribute(contract.NonNullableUnderlyingType);
            if (attribute != null)
            {
                contract.ItemRequired = attribute._itemRequired;
            }

            // check if a JsonConstructorAttribute has been defined and use that
            if (contract.NonNullableUnderlyingType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Any(c => c.IsDefined(typeof(JsonConstructorAttribute), true)))
            {
                ConstructorInfo constructor = GetAttributeConstructor(contract.NonNullableUnderlyingType);
                if (constructor != null)
                {
                    contract.OverrideConstructor = constructor;
                    contract.ConstructorParameters.AddRange(CreateConstructorParameters(constructor, contract.Properties));
                }
            }
            else if (contract.DefaultCreator == null || contract.DefaultCreatorNonPublic)
            {
                ConstructorInfo constructor = GetParametrizedConstructor(contract.NonNullableUnderlyingType);
                if (constructor != null)
                {
                    contract.ParametrizedConstructor = constructor;
                    contract.ConstructorParameters.AddRange(CreateConstructorParameters(constructor, contract.Properties));
                }
            }
            return(contract);
        }
Esempio n. 23
0
        protected virtual JsonObjectContract CreateObjectContract(Type objectType)
        {
            JsonObjectContract jsonObjectContract = new JsonObjectContract(objectType);

            this.InitializeContract((JsonContract)jsonObjectContract);
            bool serializableAttribute = this.IgnoreSerializableAttribute;

            jsonObjectContract.MemberSerialization = JsonTypeReflector.GetObjectMemberSerialization(jsonObjectContract.NonNullableUnderlyingType, serializableAttribute);
            CollectionUtils.AddRange <JsonProperty>((IList <JsonProperty>)jsonObjectContract.Properties, (IEnumerable <JsonProperty>) this.CreateProperties(jsonObjectContract.NonNullableUnderlyingType, jsonObjectContract.MemberSerialization));
            JsonObjectAttribute jsonObjectAttribute = JsonTypeReflector.GetJsonObjectAttribute(jsonObjectContract.NonNullableUnderlyingType);

            if (jsonObjectAttribute != null)
            {
                jsonObjectContract.ItemRequired = jsonObjectAttribute._itemRequired;
            }
            if (Enumerable.Any <ConstructorInfo>((IEnumerable <ConstructorInfo>)jsonObjectContract.NonNullableUnderlyingType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic), (Func <ConstructorInfo, bool>)(c => c.IsDefined(typeof(JsonConstructorAttribute), true))))
            {
                ConstructorInfo attributeConstructor = this.GetAttributeConstructor(jsonObjectContract.NonNullableUnderlyingType);
                if (attributeConstructor != null)
                {
                    jsonObjectContract.OverrideConstructor = attributeConstructor;
                    CollectionUtils.AddRange <JsonProperty>((IList <JsonProperty>)jsonObjectContract.ConstructorParameters, (IEnumerable <JsonProperty>) this.CreateConstructorParameters(attributeConstructor, jsonObjectContract.Properties));
                }
            }
            else if (jsonObjectContract.MemberSerialization == MemberSerialization.Fields)
            {
                if (JsonTypeReflector.FullyTrusted)
                {
                    jsonObjectContract.DefaultCreator = new Func <object>(jsonObjectContract.GetUninitializedObject);
                }
            }
            else if (jsonObjectContract.DefaultCreator == null || jsonObjectContract.DefaultCreatorNonPublic)
            {
                ConstructorInfo parametrizedConstructor = this.GetParametrizedConstructor(jsonObjectContract.NonNullableUnderlyingType);
                if (parametrizedConstructor != null)
                {
                    jsonObjectContract.ParametrizedConstructor = parametrizedConstructor;
                    CollectionUtils.AddRange <JsonProperty>((IList <JsonProperty>)jsonObjectContract.ConstructorParameters, (IEnumerable <JsonProperty>) this.CreateConstructorParameters(parametrizedConstructor, jsonObjectContract.Properties));
                }
            }
            return(jsonObjectContract);
        }
        public static MemberSerialization GetObjectMemberSerialization(Type objectType)
        {
            JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);

            if (objectAttribute == null)
            {
#if !PocketPC && !NET20 && !SILVERLIGHT
                DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);

                if (dataContractAttribute != null)
                {
                    return(MemberSerialization.OptIn);
                }
#endif

                return(MemberSerialization.OptOut);
            }

            return(objectAttribute.MemberSerialization);
        }
        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);
        }
Esempio n. 26
0
            protected override JsonObjectContract CreateObjectContract(Type objectType)
            {
                bool hasConverter = false;

                foreach (JsonConverter converter in _converters)
                {
                    if (converter.CanConvert(objectType))
                    {
                        hasConverter = true;
                        break;
                    }
                }

                if (hasConverter == false &&
                    Attribute.IsDefined(objectType, typeof(JsonContainerAttribute)) == false &&
                    Attribute.IsDefined(objectType, typeof(JsonConverterAttribute)) == false)
                {
                    throw new InvalidOperationException("The type " + objectType.FullName + " needs a JsonObject attribute");
                }

                // Verify that the attribute, if it is a JsonObjectAttribute, has OptIn member
                // serialization
                {
                    JsonObjectAttribute attribute = (JsonObjectAttribute)
                                                    Attribute.GetCustomAttribute(objectType, typeof(JsonObjectAttribute));
                    if (attribute != null)
                    {
                        if (attribute.MemberSerialization != MemberSerialization.OptIn)
                        {
                            throw new InvalidOperationException("The type " + objectType.FullName + " has a JsonObject attribute, but it does not specify MemberSerialization.OptIn");
                        }
                    }
                }

                return(base.CreateObjectContract(objectType));
            }
Esempio n. 27
0
        public static MemberSerialization GetObjectMemberSerialization(Type objectType, bool ignoreSerializableAttribute)
        {
            JsonObjectAttribute jsonObjectAttribute = JsonTypeReflector.GetJsonObjectAttribute(objectType);

            if (jsonObjectAttribute != null)
            {
                return(jsonObjectAttribute.MemberSerialization);
            }
            DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(objectType);

            if (dataContractAttribute != null)
            {
                return(MemberSerialization.OptIn);
            }
            if (!ignoreSerializableAttribute)
            {
                SerializableAttribute serializableAttribute = JsonTypeReflector.GetSerializableAttribute(objectType);
                if (serializableAttribute != null)
                {
                    return(MemberSerialization.Fields);
                }
            }
            return(MemberSerialization.OptOut);
        }
Esempio n. 28
0
 /// <summary>
 /// Gets or sets a value that indicates whether the object's properties are required.
 /// </summary>
 /// <value>
 ///     A value indicating whether the object's properties are required.
 /// </value>
 public static void ItemRequired(JsonObjectAttribute attribute, Required value)
 {
     XJsonReflection.Api.ObjectAttributes.ItemRequired(attribute, value);
 }
Esempio n. 29
0
 /// <summary>
 /// Gets or sets a value that indicates whether the object's properties are required.
 /// </summary>
 /// <value>
 ///     A value indicating whether the object's properties are required.
 /// </value>
 public static Required ItemRequired(this JsonObjectAttribute attribute)
 {
     return(XJsonReflection.Api.ObjectAttributes.ItemRequired(attribute));
 }
Esempio n. 30
0
 /// <summary>
 /// Gets or sets the member serialization.
 /// </summary>
 /// <value>The member serialization.</value>
 public static void MemberSerialization(this JsonObjectAttribute attribute, MemberSerialization value)
 {
     XJsonReflection.Api.ObjectAttributes.MemberSerialization(attribute, value);
 }