Esempio n. 1
0
            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;
            }
Esempio n. 2
0
        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;
        }