How to set extra fields to Request / GetProduct request extra fields.


public class ExtendedProductProvider : ProductProviderIExtendedProductProvider
    {
        public override IProductCollection GetProducts(IProductListLoadOptions options)
        {
            Guard.ThrowIfNull(options, "options");

            var request = new List<XElement>()
            {
                XParam("VisibleOnly", options.VisibleOnly),
                XParam("LoadRelatedSkus", options.LoadRelatedSkus),
                XParam("LoadVisibilityRules", options.LoadVisibilityRules),
                XParam("CalculatePrices", options.CalculatePrices),
                XParam("CalculateInventory", options.CalculateInventory),
                XParam("CalculateSkuPrices", options.CalculateSkuPrices),
                XParam("CalculateSkuInventory", options.CalculateInventory && options.CalculateSkuInventory),
                XParam("CheckStock", Context.Settings.CheckStock),
                XParam("AccountId", Context.AccountId),
                XParam("AccountType", Context.AccountType),
                XParam("MultiCurrency", options.MultiCurrency),
            };
 
            IEnumerable<string> extraFields = new List<string>() { "SANAECOM_FILTER1""SANAECOM_FILTER2""SANAECOM_FILTER3","SANAECOM_FILTER4","SANAECOM_FILTER5" };
            
            options.EntityFields = extraFields;

            AddLoadOptions(request, options);

            OnGetProducts(request, options);
            var result = ExecuteRequest("GetProducts", request);
            var products = Parser.ParseCollection<IProductCollectionIProduct>(result, "Product", Parser.ParseProduct);

            if (options.LoadRelatedSkus)
            {
                foreach (var p in products)
                {
                    if (p.Variants == null)
                        p.Variants = ObjectFactory.Create<IProductVariantCollection>();
                    if (p.Prepacks == null)
                        p.Prepacks = ObjectFactory.Create<IProductPrepackCollection>();

                    FillVariantsDimensions(p);
                }
            }
            return products;
        }
 
 
        protected override void AddLoadOptions(IList<XElement> request, IEntityListLoadOptions options)
        {
            AddPagingAndSorting(request, options);
            request.Add(XmlHelper.CreateQueryFieldsElement(options.EntityFields));
            request.Add(XmlHelper.CreateFilterElement(options.Filter));
        }
    }


To extra fields called by CreateQueryFieldsElement method

 protected override void AddLoadOptions(IList<XElement> request, IEntityListLoadOptions options)
        {
            AddPagingAndSorting(request, options);
            request.Add(XmlHelper.CreateQueryFieldsElement(options.EntityFields));
            request.Add(XmlHelper.CreateFilterElement(options.Filter));
        }


set as follow

 IEnumerable<string> extraFields = new List<string>() { "SANAECOM_FILTER1""SANAECOM_FILTER2""SANAECOM_FILTER3","SANAECOM_FILTER4","SANAECOM_FILTER5" };
            
            options.EntityFields = extraFields;