예제 #1
0
            internal static void RegisterElement <T, TElement, TSerializer>() where TSerializer : ITypeSerializer
            {
                DeserializeDictionary <TSerializer> .ParseDictionary <T, TElement>(null, null, null, null);

                DeserializeDictionary <TSerializer> .ParseDictionary <TElement, T>(null, null, null, null);

                ToStringDictionaryMethods <T, TElement, TSerializer> .WriteIDictionary(null, null, null, null);

                ToStringDictionaryMethods <TElement, T, TSerializer> .WriteIDictionary(null, null, null, null);

                // Include List deserialisations from the Register<> method above.  This solves issue where List<Guid> properties on responses deserialise to null.
                // No idea why this is happening because there is no visible exception raised.  Suspect MonoTouch is swallowing an AOT exception somewhere.
                DeserializeArrayWithElements <TElement, TSerializer> .ParseGenericArray(null, null);

                DeserializeListWithElements <TElement, TSerializer> .ParseGenericList(null, null, null);

                // Cannot use the line below for some unknown reason - when trying to compile to run on device, mtouch bombs during native code compile.
                // Something about this line or its inner workings is offensive to mtouch. Luckily this was not needed for my List<Guide> issue.
                // DeserializeCollection<JsonTypeSerializer>.ParseCollection<TElement>(null, null, null);

                TranslateListWithElements <TElement> .LateBoundTranslateToGenericICollection(null, typeof(List <TElement>));

                TranslateListWithConvertibleElements <TElement, TElement> .LateBoundTranslateToGenericICollection(null, typeof(List <TElement>));
            }
예제 #2
0
            internal static int Register <T, TSerializer>() where TSerializer : ITypeSerializer
            {
                var i = 0;

                if (JsonWriter <T> .WriteFn() != null)
                {
                    i++;
                }
                if (JsonWriter.Instance.GetWriteFn <T>() != null)
                {
                    i++;
                }
                if (JsonReader.Instance.GetParseFn <T>() != null)
                {
                    i++;
                }
                if (JsonReader <T> .Parse(null) != null)
                {
                    i++;
                }
                if (JsonReader <T> .GetParseFn() != null)
                {
                    i++;
                }
                //if (JsWriter.GetTypeSerializer<JsonTypeSerializer>().GetWriteFn<T>() != null) i++;
                if (new List <T>() != null)
                {
                    i++;
                }
                if (new T[0] != null)
                {
                    i++;
                }

                JsConfig <T> .ExcludeTypeInfo = false;

                if (JsConfig <T> .OnDeserializedFn != null)
                {
                    i++;
                }
                if (JsConfig <T> .HasDeserializeFn)
                {
                    i++;
                }
                if (JsConfig <T> .SerializeFn != null)
                {
                    i++;
                }
                if (JsConfig <T> .DeSerializeFn != null)
                {
                    i++;
                }
                //JsConfig<T>.SerializeFn = arg => "";
                //JsConfig<T>.DeSerializeFn = arg => default(T);
                if (TypeConfig <T> .Properties != null)
                {
                    i++;
                }

/*
 *                              if (WriteType<T, TSerializer>.Write != null) i++;
 *                              if (WriteType<object, TSerializer>.Write != null) i++;
 *
 *                              if (DeserializeBuiltin<T>.Parse != null) i++;
 *                              if (DeserializeArray<T[], TSerializer>.Parse != null) i++;
 *                              DeserializeType<TSerializer>.ExtractType(null);
 *                              DeserializeArrayWithElements<T, TSerializer>.ParseGenericArray(null, null);
 *                              DeserializeCollection<TSerializer>.ParseCollection<T>(null, null, null);
 *                              DeserializeListWithElements<T, TSerializer>.ParseGenericList(null, null, null);
 *
 *                              SpecializedQueueElements<T>.ConvertToQueue(null);
 *                              SpecializedQueueElements<T>.ConvertToStack(null);
 */

                WriteListsOfElements <T, TSerializer> .WriteList(null, null);

                WriteListsOfElements <T, TSerializer> .WriteIList(null, null);

                WriteListsOfElements <T, TSerializer> .WriteEnumerable(null, null);

                WriteListsOfElements <T, TSerializer> .WriteListValueType(null, null);

                WriteListsOfElements <T, TSerializer> .WriteIListValueType(null, null);

                WriteListsOfElements <T, TSerializer> .WriteGenericArrayValueType(null, null);

                WriteListsOfElements <T, TSerializer> .WriteArray(null, null);

                TranslateListWithElements <T> .LateBoundTranslateToGenericICollection(null, null);

                TranslateListWithConvertibleElements <T, T> .LateBoundTranslateToGenericICollection(null, null);

                QueryStringWriter <T> .WriteObject(null, null);

                return(i);
            }