Apply discount changes with Strategy pattern
The classes seem OK but the usage makes no sense:

                case "GOLD":
                    //Gold 
                    clsBL blgold = new clsBL(new clsGoldDiscountStrategy());
                    blgold.costPrice = 5;
                    blgold.qty = 10;

                    result = blgold.GetfinalPrice(blgold.costPrice, blgold.qty);
                    break;


This code (and the other switch case) does not use the polymorphism that the interface IStrategy enables. Rather, you can have simply written this code as:

                case "GOLD":
                    double GetGoldPrice(double x, double y) =&gt; (x * y) * 0.8;
                    result = GetGoldPrice(5, 10);
                    break;


Here, all classes and interfaces are deleted. There is just a static method.

If you want to use the strategy pattern it must look something like:

IStrategy strategy = GetStrategy();
strategy.Calculate(...);


Here, GetStrategy() can return any object compliant with that interface and further code does depend on any concrete type.



Regarding naming, the classes do not have to be called "Strategy". I'd use the names IDiscountCalculator and GoldDicountCalculator. Or, instead of "Calculator" you could use "Model" or "Provider".