public Plan1DataWrapper(PreferedDataProvider dataProvider, string locationParam)
    {
        //We can keep all databases,or instantiate only one and remove dataProvider member in this class.
        this.dataProvider = dataProvider;

        switch (dataProvider)
        {
        case PreferedDataProvider.XmlDataProvider: { localData = new Plan1XmlData(locationParam); } break;

        default: { localData = new Plan1Data(); } break;
        }
    }
    // Use this for initialization
    public Plan1ModelWrapper(PreferedDataProvider preferedDataProvider, string locationParam)
    {
        dataProvider = new Plan1DataWrapper(preferedDataProvider, locationParam);
        logic        = new Plan1BusinessLogic(ref dataProvider);

        //Desired usage (in Business Logic class methods) :

        /*
         * logic->SortAllReports()
         * {
         * dataProvider->Give me all the reports(database is automatically selected by API)
         *
         * //sort reports here
         *
         * .//return sorted data
         * }
         */
    }
 public Plan2Data(PreferedDataProvider dataProvider)
 {
     //We can keep all databases,or instantiate only one and remove dataProvider member in this class.
 }