public virtual TProxy GetProxy <TProxy>(ICalleeProxyInterceptor interceptor) where TProxy : class
        {
            TProxy result = DispatchProxy.Create <TProxy, CalleeProxy>();

            CalleeProxy casted = result as CalleeProxy;

            casted.Handler = mHandler;
            casted.CalleeProxyInterceptor = interceptor;

            return(result);
        }
        public virtual TProxy GetProxy <TProxy>(ICalleeProxyInterceptor interceptor) where TProxy : class
        {
            if (typeof(CalleeProxyBase).IsAssignableFrom(typeof(TProxy)))
            {
                return((TProxy)Activator.CreateInstance(typeof(TProxy), mProxy, interceptor));
            }
            else
            {
                TProxy result = DispatchProxy.Create <TProxy, CalleeProxy>();

                CalleeProxy casted = result as CalleeProxy;

                casted.Handler = mHandler;
                casted.CalleeProxyInterceptor = interceptor;

                return(result);
            }
        }