internal static Func<IDataReader, object> GetReader(Type type, IDataReader reader, int startBound, int length, bool returnNullIfFirstMissing)
 {
     var found = (TypeDeserializerCache)byType type];
     if (found == null)
     {
         lock (byType)
         {
             found = (TypeDeserializerCache)byType type];
             if (found == null)
             {
                 byType type] = found = new TypeDeserializerCache(type);
             }
         }
     }
     return found.GetReader(reader, startBound, length, returnNullIfFirstMissing);
 }
            public static Func <XmlGridRowReader, object> GetDeserializer(
                Type type, XmlGridRowReader reader)
            {
                if (!byType.TryGetValue(type, out var deserializers))
                {
                    lock (byType)
                    {
                        if (!byType.TryGetValue(type, out deserializers))
                        {
                            deserializers = new TypeDeserializerCache(type);
                        }

                        byType.Add(type, deserializers);
                    }
                }

                return(deserializers.GetDeserializer(reader));
            }
Пример #3
0
 /// <summary>
 /// Internal use only
 /// </summary>
 /// <param name="type"></param>
 /// <param name="reader"></param>
 /// <param name="startBound"></param>
 /// <param name="length"></param>
 /// <param name="returnNullIfFirstMissing"></param>
 /// <returns></returns>
 public static Func <IDataReader, object> GetTypeDeserializer(Type type, IDataReader reader, int startBound = 0, int length = -1, bool returnNullIfFirstMissing = false)
 {
     return(TypeDeserializerCache.GetReader(type, reader, startBound, length, returnNullIfFirstMissing));
 }
Пример #4
0
 private static Func <XmlGridRowReader, object> GetDeserializer(
     Type type, XmlGridRowReader reader)
 {
     return(TypeDeserializerCache.GetDeserializer(type, reader));
 }