public virtual Type CreateProxyType(Type baseType, params Type[] baseInterfaces) { // Reuse the previous results, if possible if (_cache != null && _cache.Contains(baseType, baseInterfaces)) { return(_cache.GetProxyType(baseType, baseInterfaces)); } Type result = CreateUncachedProxyType(baseInterfaces, baseType); // Cache the proxy type if (result != null && _cache != null) { _cache.StoreProxyType(result, baseType, baseInterfaces); } return(result); }