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; }
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; }