public void BindWithInterceptors <TProxySelector>(IServiceCollection services, Action <InterceptorOption> option = null)
            where TProxySelector : class, IProxySelector, new()
        {
            string nameSpaceStr = null;

            if (option != null)
            {
                InterceptorOption interceptorOption = new InterceptorOption();
                option.Invoke(interceptorOption);
                nameSpaceStr = interceptorOption.namespaceStr;
            }


            var proxySelectorCnt = services.FirstOrDefault(t => t.ServiceType.Equals(typeof(IProxySelector)));

            if (proxySelectorCnt == null)
            {
                services.AddSingleton(typeof(IProxySelector), typeof(TProxySelector));
            }

            var interceptorContextCnt = services.FirstOrDefault(t => t.ServiceType.Equals(typeof(IProxySelector)));

            if (interceptorContextCnt == null)
            {
                services.AddScoped <IInterceptorContext, InterceptorContext>();
            }

            var proxyGeneratorCnt = services.FirstOrDefault(t => t.ServiceType.Equals(typeof(IProxySelector)));

            if (proxyGeneratorCnt == null)
            {
                services.AddScoped <IProxyGenerator, ProxyGenerator>();
            }

            BindType <ITransientType, TProxySelector>(services, nameSpaceStr);
            BindType <IScopedType, TProxySelector>(services, nameSpaceStr);
            BindType <ISingletonType, TProxySelector>(services, nameSpaceStr);
        }
        public void BindWithInterceptors(IServiceCollection services, Action <InterceptorOption> option = null)
        {
            string nameSpaceStr = null;

            if (option != null)
            {
                InterceptorOption interceptorOption = new InterceptorOption();
                option.Invoke(interceptorOption);
                nameSpaceStr = interceptorOption.namespaceStr;
            }

            var proxySelectorCnt = services.FirstOrDefault(t => t.ServiceType.Equals(typeof(IProxySelector)));

            if (proxySelectorCnt == null)
            {
                services.AddSingleton(typeof(IProxySelector), new AttributeBaseProxySelector());
            }


            BindType <ITransientType, AttributeBaseProxySelector>(services, nameSpaceStr);
            BindType <IScopedType, AttributeBaseProxySelector>(services, nameSpaceStr);
            BindType <ISingletonType, AttributeBaseProxySelector>(services, nameSpaceStr);
        }