public Type CreateProxyType(Type serviceType)
        {
            if (null == serviceType)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            if (serviceType.IsInterface)
            {
                return(ProxyUtils.CreateInterfaceProxy(serviceType));
            }
            return(ProxyUtils.CreateClassProxy(serviceType, serviceType));
        }
        public object CreateProxy([NotNull] Type serviceType)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            var proxyType = _proxyTypeFactory.CreateProxyType(serviceType);
            var proxy     = _serviceProvider.CreateInstance(proxyType);

            if (serviceType.IsClass)
            {
                ProxyUtils.SetProxyTarget(proxy, _serviceProvider.CreateInstance(serviceType));
            }
            return(proxy);
        }
        public object CreateProxyWithTarget(Type serviceType, object implement)
        {
            if (null == serviceType)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }
            if (implement == null)
            {
                throw new ArgumentNullException(nameof(implement));
            }

            var implementType = implement.GetType();
            var proxyType     = _proxyTypeFactory.CreateProxyType(serviceType, implementType);
            var proxy         = _serviceProvider.CreateInstance(proxyType);

            ProxyUtils.SetProxyTarget(proxy, implement);
            return(proxy);
        }
        public object CreateProxy([NotNull] Type serviceType, [NotNull] Type implementType)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            if (implementType == null)
            {
                throw new ArgumentNullException(nameof(implementType));
            }

            var proxyType = _proxyTypeFactory.CreateProxyType(serviceType, implementType);
            var proxy     = _serviceProvider.CreateInstance(proxyType);
            var target    = _serviceProvider.CreateInstance(implementType);

            ProxyUtils.SetProxyTarget(proxy, target);
            return(proxy);
        }
Beispiel #5
0
        public object CreateProxy(Type serviceType, Type implementType, params object?[] arguments)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            if (implementType == null)
            {
                throw new ArgumentNullException(nameof(implementType));
            }

            var proxyType = _proxyTypeFactory.CreateProxyType(serviceType, implementType);

            if (serviceType.IsInterface)
            {
                var implement = _serviceProvider.CreateInstance(implementType, arguments);
                var proxy     = _serviceProvider.CreateInstance(proxyType);
                ProxyUtils.SetProxyTarget(proxy, implement);
                return(proxy);
            }

            return(_serviceProvider.CreateInstance(proxyType, arguments));
        }