internal static DynamicProxy GetOrAdd(Type type) { DynamicProxy proxy = null; using (var readLock = ReadWriteLocker.AcquireUpgradeableReadLock()) { if (!_cache.TryGetValue(type, out proxy)) { using (var writeLock = readLock.UpgradeToWriterLock()) { proxy = type.CreateProxy(); _cache.GetOrAdd(type, proxy); } } return(proxy); } }
internal static DynamicProxy Cache(Type type) { return(_cache.GetOrAdd(type, DynamicProxy.Wrap(type))); }