/// <summary>
 /// Gets the proxy type.
 /// </summary>
 /// <typeparam name="TInterfaceType"></typeparam>
 /// <param name="baseType"></param>
 /// <returns></returns>
 public static Type CreateProxyType <TInterfaceType>(Type baseType = null)
 {
     return(ProxyBuilder <TInterfaceType> .CreateType(baseType));
 }
        /// <summary>
        /// Clear builder cache.
        /// </summary>
        /// <typeparam name="TInterfaceType"></typeparam>
        public static void ClearCache <TInterfaceType>() //Should be internal to tests
        {
            ProxyBuilder <TInterfaceType> .ClearCache();

            SimpleModuleBuilder.ClearCache();
        }
 /// <summary>
 /// Creates an proxy for an object.
 /// </summary>
 /// <typeparam name="TInterfaceType"></typeparam>
 /// <param name="realObjecteBuilder"></param>
 /// <returns></returns>
 public static TInterfaceType Create <TInterfaceType>(Func <TInterfaceType> realObjecteBuilder)
 {
     return(ProxyBuilder <TInterfaceType> .Builder(realObjecteBuilder()));
 }