protected static ObjectUnserializer Get(HproseMode mode, Type type, string[] names, CreateObjectUnserializerDelegate createObjectUnserializer) { CacheKey key = new CacheKey(mode, type, names); ObjectUnserializer unserializer = null; try { #if (dotNET35 || dotNET4) unserializersCacheLock.EnterReadLock(); #else unserializersCacheLock.AcquireReaderLock(-1); #endif if (unserializersCache.TryGetValue(key, out unserializer)) { return(unserializer); } } finally { #if (dotNET35 || dotNET4) unserializersCacheLock.ExitReadLock(); #else unserializersCacheLock.ReleaseReaderLock(); #endif } try { #if (dotNET35 || dotNET4) unserializersCacheLock.EnterWriteLock(); #else unserializersCacheLock.AcquireWriterLock(-1); #endif if (unserializersCache.TryGetValue(key, out unserializer)) { return(unserializer); } unserializer = createObjectUnserializer(type, names); unserializersCache[key] = unserializer; } finally { #if (dotNET35 || dotNET4) unserializersCacheLock.ExitWriteLock(); #else unserializersCacheLock.ReleaseWriterLock(); #endif } return(unserializer); }
public static ObjectUnserializer Get(Type type, string[] names) { return(ObjectUnserializer.Get(HproseMode.MemberMode, type, names, CreateObjectUnserializer)); }
public static ObjectUnserializer Get(Type type, string[] names) { return(ObjectUnserializer.Get(HproseMode.FieldMode | HproseMode.PropertyMode, type, names, CreateObjectUnserializer)); }