public MetaDataBag GetMetaDataBag(AppSettings appSettings) { MetaDataBag bag; Console.WriteLine("Getting metadata bag..."); if (!File.Exists(appSettings.MetaDataBagFilePath)) { Console.WriteLine("No stored bag found so retrieving meta data from LARS..."); var timer = Stopwatch.StartNew(); bag = new MetaDataBag { Frameworks = GetMetaData <FrameworkMetaData>(appSettings.CsvFileNameFrameworks), Standards = GetMetaData <LarsStandard>(appSettings.CsvFileNameStandards), FrameworkAims = GetMetaData <FrameworkAimMetaData>(appSettings.CsvFileNameFrameworkAims), FrameworkComponentTypes = GetMetaData <FrameworkComponentTypeMetaData>( appSettings.CsvFileNameFrameworkComponentType), LearningDeliveries = GetMetaData <LearningDeliveryMetaData>( appSettings.CsvFileNameLearningDelivery), Fundings = GetMetaData <FundingMetaData>(appSettings.CsvFileNameFunding) }; Console.WriteLine($"Time taken to get meta data from LARS: {timer.Elapsed.ToString("g")}"); Console.WriteLine("Serializing metadata bag to file..."); FileSerializer.SerializeToFile(appSettings.MetaDataBagFilePath, bag); } else { Console.WriteLine("Grabbing metadata bag from stored file..."); bag = FileSerializer.DeserializeFromFile <MetaDataBag>(appSettings.MetaDataBagFilePath); } return(bag); }