public object CreateProxy(IThreadSafeProxyFactory threadSafeProxyFactory, object obj, Type proxyType, Predicate <MethodInfo> methodIncluder, ILock theLock) { var typedFactoryCall = _typedFactoryCallProvider.GetTypedFactoryCall(proxyType); return(typedFactoryCall.Invoke(threadSafeProxyFactory, obj, methodIncluder, theLock)); }
public TypedFactoryCall GetTypedFactoryCall(Type proxyType) { TypedFactoryCall typedFactoryCall; lock (_cachedTypedFactoryCallsLockingObject) { if (!_cachedTypedFactoryCalls.TryGetValue(proxyType, out typedFactoryCall)) { typedFactoryCall = _typedFactoryCallProvider.GetTypedFactoryCall(proxyType); _cachedTypedFactoryCalls[proxyType] = typedFactoryCall; } } return(typedFactoryCall); }