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)); }
/// <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)); }
private static Func <XmlGridRowReader, object> GetDeserializer( Type type, XmlGridRowReader reader) { return(TypeDeserializerCache.GetDeserializer(type, reader)); }