public IInterceptingProxy CreateProxy(Type t, object target, params Type[] additionalInterfaces)
        {
            Guard.ArgumentNotNull(t, "t");
            Guard.ArgumentNotNull(target, "target");

            RealProxy realProxy = new InterceptingRealProxy(target, t, additionalInterfaces);
            return (IInterceptingProxy)realProxy.GetTransparentProxy();
        }
        /// <summary>
        /// Create a proxy object that provides interception for <paramref name="target"/>.
        /// </summary>
        /// <param name="t">Type to generate the proxy of.</param>
        /// <param name="target">Object to create the proxy for.</param>
        /// <param name="additionalInterfaces">Additional interfaces the proxy must implement.</param>
        /// <returns>The proxy object.</returns>
        public IInterceptingProxy CreateProxy(Type t, object target, params Type[] additionalInterfaces)
        {
            Guard.ArgumentNotNull(t, "t");
            Guard.ArgumentNotNull(target, "target");

            RealProxy realProxy = new InterceptingRealProxy(target, t, additionalInterfaces);

            return((IInterceptingProxy)realProxy.GetTransparentProxy());
        }
        /// <summary>
        /// Create a proxy object that provides interception for <paramref name="target"/>.
        /// </summary>
        /// <param name="t">Type to generate the proxy of.</param>
        /// <param name="target">Object to create the proxy for.</param>
        /// <returns>The proxy object.</returns>
        public IInterceptingProxy CreateProxy(Type t, object target)
        {
            Guard.ArgumentNotNull(t, "t");
            Guard.ArgumentNotNull(target, "target");

            RealProxy realProxy = new InterceptingRealProxy(target, t);

            return((IInterceptingProxy)realProxy.GetTransparentProxy());
        }