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 ThreadSafeProxyBuilderDependencies(IThreadSafeProxyFactory defaultThreadSafeProxyFactory, MethodInfoExtractor methodInfoExtractor, DynamicThreadSafeProxyFactoryInvoker dynamicThreadSafeProxyFactoryInvoker, Func<object, ILock> defaultLockFactory) { if (defaultThreadSafeProxyFactory == null) { throw new ArgumentNullException("defaultThreadSafeProxyFactory"); } if (methodInfoExtractor == null) { throw new ArgumentNullException("methodInfoExtractor"); } if (dynamicThreadSafeProxyFactoryInvoker == null) { throw new ArgumentNullException("dynamicThreadSafeProxyFactoryInvoker"); } if (defaultLockFactory == null) { throw new ArgumentNullException("defaultLockFactory"); } _defaultThreadSafeProxyFactory = defaultThreadSafeProxyFactory; _methodInfoExtractor = methodInfoExtractor; _dynamicThreadSafeProxyFactoryInvoker = dynamicThreadSafeProxyFactoryInvoker; _defaultLockFactory = defaultLockFactory; }
public ThreadSafeProxyBuilderDependencies(IThreadSafeProxyFactory defaultThreadSafeProxyFactory, MethodInfoExtractor methodInfoExtractor, DynamicThreadSafeProxyFactoryInvoker dynamicThreadSafeProxyFactoryInvoker, Func <object, ILock> defaultLockFactory) { if (defaultThreadSafeProxyFactory == null) { throw new ArgumentNullException("defaultThreadSafeProxyFactory"); } if (methodInfoExtractor == null) { throw new ArgumentNullException("methodInfoExtractor"); } if (dynamicThreadSafeProxyFactoryInvoker == null) { throw new ArgumentNullException("dynamicThreadSafeProxyFactoryInvoker"); } if (defaultLockFactory == null) { throw new ArgumentNullException("defaultLockFactory"); } _defaultThreadSafeProxyFactory = defaultThreadSafeProxyFactory; _methodInfoExtractor = methodInfoExtractor; _dynamicThreadSafeProxyFactoryInvoker = dynamicThreadSafeProxyFactoryInvoker; _defaultLockFactory = defaultLockFactory; }
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)); }
/// <summary> /// Specifies an IThreadSafeProxyFactory to use to create the proxy when the Build() method is invoked. Current instance can be /// retrieved through the ThreadSafeProxyFactory property, e.g. for decorating. /// </summary> /// <param name="threadSafeProxyFactory"></param> /// <returns></returns> public ThreadSafeProxyBuilder <TProxy> WithThreadSafeProxyFactory(IThreadSafeProxyFactory threadSafeProxyFactory) { if (threadSafeProxyFactory == null) { throw new ArgumentNullException("threadSafeProxyFactory"); } _threadSafeProxyFactory = threadSafeProxyFactory; return(this); }
internal ThreadSafeProxyBuilder(TProxy subject, Type proxyType, DependencyResolver.ThreadSafeProxyBuilderDependencies dependencies) : base(dependencies.MethodInfoExtractor, proxyType) { if (subject == null) { throw new ArgumentNullException("subject"); } if (proxyType != typeof(TProxy) && (!proxyType.IsAssignableFrom(subject.GetType()))) { throw new ArgumentException(ExceptionMessages.SubjectCannotBeAssignedToProxyType); } _subject = subject; _threadSafeProxyFactory = dependencies.DefaultThreadSafeProxyFactory; _methodInfoExtractor = dependencies.MethodInfoExtractor; _dynamicThreadSafeProxyFactoryInvoker = dependencies.DynamicThreadSafeProxyFactoryInvoker; _lockFactory = dependencies.DefaultLockFactory; }
public abstract object Invoke(IThreadSafeProxyFactory threadSafeProxyFactory, object obj, Predicate<MethodInfo> methodIncluder, ILock theLock);
public abstract object Invoke(IThreadSafeProxyFactory threadSafeProxyFactory, object obj, Predicate <MethodInfo> methodIncluder, ILock theLock);
public override object Invoke(IThreadSafeProxyFactory threadSafeProxyFactory, object obj, Predicate <MethodInfo> methodIncluder, ILock theLock) { return(threadSafeProxyFactory.CreateProxy <TProxy>(obj as TProxy, methodIncluder, theLock)); }