/// <summary>
 /// Saves data to a file.
 /// </summary>
 /// <param name="fileName">Name of the file to write to</param>
 /// <param name="data">The data to save</param>
 public static async Task WriteToDataFileAsync(string directoryName, string fileName, T data)
 {
     try
     {
         string output = JsonConvert.SerializeObject(data);
         await StorageUtility.WriteToDataFileAsync(directoryName, fileName, output);
     }
     catch
     {
         // Add desired error handling for your application
         // ApplicationState.ErrorLog.Add(new ErrorLog("SaveToFile", e.Message));
     }
 }
        /// <summary>
        /// 將物件資料寫入到檔案中
        /// </summary>
        public virtual async Task WriteToFileAsync()
        {
            string data = "";

            if (PersistentStorage == PersistentStorage.Single)
            {
                data = JsonConvert.SerializeObject(this.SingleItem);
            }
            else
            {
                data = JsonConvert.SerializeObject(this.Items);
            }
            await StorageUtility.WriteToDataFileAsync(this.現在資料夾名稱, this.資料檔案名稱, data);
        }
        /// <summary>
        /// Loads data from a file
        /// </summary>
        /// <param name="fileName">Name of the file to read.</param>
        /// <returns>Data object</returns>
        public static async Task <T> ReadFromFileAsync(string directoryName, string fileName)
        {
            //T loadedFile = default(T);
            T      loadedFile = (T)Activator.CreateInstance(typeof(T));
            string tempStr    = "";

            try
            {
                tempStr = await StorageUtility.ReadFromDataFileAsync(directoryName, fileName);

                loadedFile = JsonConvert.DeserializeObject <T>(tempStr);
            }
            catch
            {
                //ApplicationState.ErrorLog.Add(new ErrorLog("LoadFromFile", e.Message));
            }

            return(loadedFile);
        }
        /// <summary>
        /// 將物件資料從檔案中讀取出來
        /// </summary>
        public virtual async Task ReadFromFileAsync()
        {
            if (PersistentStorage == PersistentStorage.Single)
            {
                SingleItem = (T)Activator.CreateInstance(typeof(T));
            }
            else
            {
                Items = (List <T>)Activator.CreateInstance(typeof(List <T>));
            }

            string data = await StorageUtility.ReadFromDataFileAsync(this.現在資料夾名稱, this.資料檔案名稱);

            if (string.IsNullOrEmpty(data) == true)
            {
            }
            else
            {
                try
                {
                    if (PersistentStorage == PersistentStorage.Single)
                    {
                        this.SingleItem = JsonConvert.DeserializeObject <T>(data, new JsonSerializerSettings {
                            MetadataPropertyHandling = MetadataPropertyHandling.Ignore
                        });
                    }
                    else
                    {
                        this.Items = JsonConvert.DeserializeObject <List <T> >(data, new JsonSerializerSettings {
                            MetadataPropertyHandling = MetadataPropertyHandling.Ignore
                        });
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }