protected virtual void CreateHeaderWebDataPageManager(XElement xe)
        {
            _headerDataPageManager = new WebDataPageManager_v4 <THeaderData>();

            UrlCache urlCache = UrlCache.Create(xe);

            if (urlCache != null)
            {
                urlCache.GetUrlSubDirectory = GetHeaderPageCacheUrlSubDirectory;
            }
            //Trace.WriteLine($"WebHeaderDetailMongoManagerBase_v2<THeaderData, TDetailData>.CreateHeaderWebDataPageManager() : {(urlCache != null ? "urlCache created" : "no urlCache")}");

            _headerDataPageManager.WebLoadDataManager = new WebLoadDataManager_v2 <IEnumDataPages <THeaderData> >();
            _headerDataPageManager.WebLoadDataManager.TraceException  = true;
            _headerDataPageManager.WebLoadDataManager.UrlCache        = urlCache;
            _headerDataPageManager.WebLoadDataManager.InitLoadFromWeb = InitLoadFromWeb;
            _headerDataPageManager.WebLoadDataManager.GetData         = GetHeaderPageData;
            SetHttpRequestParameters(_headerDataPageManager.WebLoadDataManager.RequestParameters);
            _headerDataPageManager.GetKeyFromHttpRequest = GetHeaderKey;

            _headerDataPageManager.DataStore = MongoDataStore.Create(xe);
            MongoDataSerializer <IEnumDataPages <THeaderData> > dataSerializer = new MongoDataSerializer <IEnumDataPages <THeaderData> >();

            dataSerializer.ItemName               = xe.zXPathValue("MongoDocumentItemName");
            dataSerializer.NominalType            = _headerPageNominalType;
            _headerDataPageManager.DataSerializer = dataSerializer;

            UrlCache imageUrlCache = UrlCache.Create(xe.zXPathElement("Image"));

            _headerDataPageManager.WebLoadImageManager = new WebLoadImageManager_v2 <IEnumDataPages <THeaderData> >();
            if (imageUrlCache != null)
            {
                _headerDataPageManager.WebLoadImageManager.WebImageCacheManager = new WebImageCacheManager_v3(imageUrlCache);
                _headerDataPageManager.WebLoadImageManager.WebImageCacheManager.TraceException = true;
                _headerDataPageManager.GetImageSubDirectory = GetHeaderImageCacheUrlSubDirectory;
            }

            _headerDataPageManager.GetHttpRequestPageFunction = GetHttpRequestPage;
        }
        protected virtual void CreateDetailWebDataManager(XElement xe, IEnumerable <NamedGetData <TDetailData> > namedGetDatas)
        {
            _detailDataManager = new WebDataManager_v5 <THeaderData, TDetailData>();

            UrlCache urlCache = UrlCache.Create(xe);

            if (urlCache != null)
            {
                urlCache.GetUrlSubDirectory = GetDetailCacheUrlSubDirectory;
            }

            _detailDataManager.HttpManager = new HttpManager_v2();
            _detailDataManager.HttpManager.TraceException  = true;
            _detailDataManager.HttpManager.UrlCache        = urlCache;
            _detailDataManager.HttpManager.InitLoadFromWeb = InitLoadFromWeb;
            //_detailDataManager.WebLoadDataManager.GetData = GetDetailData;
            _detailDataManager.CreateData = CreateDetailData;
            _detailDataManager.AddNamedGetDatas(namedGetDatas);
            SetHttpRequestParameters(_detailDataManager.HttpManager.RequestParameters);

            //_detailDataManager.GetKeyFromHttpRequest = GetDetailKey;

            _detailDataManager.Store = MongoDataStore.Create(xe);
            MongoDataSerializer <TDetailData> dataSerializer = new MongoDataSerializer <TDetailData>();

            dataSerializer.ItemName           = xe.zXPathValue("MongoDocumentItemName");
            _detailDataManager.DataSerializer = dataSerializer;

            UrlCache imageUrlCache = UrlCache.Create(xe.zXPathElement("Image"));

            _detailDataManager.WebLoadImageManager = new WebLoadImageManager_v2 <TDetailData>();
            if (imageUrlCache != null)
            {
                _detailDataManager.WebLoadImageManager.WebImageCacheManager = new WebImageCacheManager_v3(imageUrlCache);
                _detailDataManager.WebLoadImageManager.WebImageCacheManager.TraceException = true;
                _detailDataManager.GetImageSubDirectory = GetDetailImageCacheUrlSubDirectory;
            }
        }