コード例 #1
0
ファイル: Storages.cs プロジェクト: swinghu/MVVM-Sidekick
            public static StorageHub <TToken, TValue> CreateJsonDatacontractIsolatedStorageHub(
                Func <TToken, string> fileNameFactory,
                IsolatedStorageFile folder = null,
                Func <Task <TToken[]> > storageTokensSelector = null)
            {
                var hub = new JsonDataContractStreamStorageHub <TToken, TValue>(
                    async(tp, tk) =>
                {
                    await TaskEx.Yield();
                    folder = folder ?? IsolatedStorageFile.GetUserStoreForApplication();



                    var filepath = fileNameFactory(tk);
                    switch (tp)
                    {
                    case StreamOpenType.Read:

                        return(folder.OpenFile(filepath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read));

                    case StreamOpenType.Write:
                        return(folder.OpenFile(filepath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite));


                    default:
                        return(null);
                    }
                },
                    storageTokensSelector
                    );

                return(hub);
            }
コード例 #2
0
ファイル: Storages.cs プロジェクト: swinghu/MVVM-Sidekick
            public static StorageHub <TToken, TValue> CreateJsonDatacontractFileStorageHub(
                Func <TToken, string> fileNameFactory,
                string folder = null,
                Func <Task <TToken[]> > storageTokensSelector = null)
            {
                var hub = new JsonDataContractStreamStorageHub <TToken, TValue>(
                    async(tp, tk) =>
                {
                    folder       = folder ?? Environment.CurrentDirectory;
                    var filepath = Path.Combine(folder, fileNameFactory(tk));


                    switch (tp)
                    {
                    case StreamOpenType.Read:

                        return(await TaskExHelper.FromResult(new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read)));

                    case StreamOpenType.Write:
                        return(await TaskExHelper.FromResult(new FileStream(filepath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)));


                    default:
                        return(null);
                    }
                },
                    storageTokensSelector
                    );

                return(hub);
            }
コード例 #3
0
ファイル: Storages.cs プロジェクト: swinghu/MVVM-Sidekick
            public static StorageHub <TToken, TValue> CreateJsonDatacontractFileStorageHub(
                Func <TToken, string> fileNameFactory,
                string folder = null,
                Func <Task <TToken[]> > storageTokensSelector = null)
            {
                var hub = new JsonDataContractStreamStorageHub <TToken, TValue>(
                    async(tp, tk) =>
                {
                    folder       = folder ?? Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
                    var filepath = Path.Combine(folder, fileNameFactory(tk));

                    switch (tp)
                    {
                    case StreamOpenType.Read:

                        return(new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read));

                    case StreamOpenType.Write:
                        return(new FileStream(filepath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite));


                    default:
                        return(null);
                    }
                },
                    storageTokensSelector
                    );

                return(hub);
            }
コード例 #4
0
ファイル: Storages.cs プロジェクト: swinghu/MVVM-Sidekick
            public static StorageHub <TToken, TValue> CreateJsonDatacontractFileStorageHub(
                Func <TToken, string> fileNameFactory,
                StorageFolder folder = null,
                Func <Task <TToken[]> > storageTokensSelector = null)
            {
                var hub = new JsonDataContractStreamStorageHub <TToken, TValue>(
                    async(tp, tk) =>
                {
                    folder = folder ?? Windows.Storage.ApplicationData.Current.LocalFolder;
                    switch (tp)
                    {
                    case StreamOpenType.Read:
                        {
                            var file = await folder.CreateFileAsync(fileNameFactory(tk), CreationCollisionOption.OpenIfExists);

                            return(await file.OpenStreamForReadAsync());
                        }

                    case StreamOpenType.Write:
                        {
                            var file = await folder.CreateFileAsync(fileNameFactory(tk), CreationCollisionOption.ReplaceExisting);

                            return(await file.OpenStreamForWriteAsync());
                        }

                    default:
                        return(null);
                    }
                },
                    storageTokensSelector
                    );

                return(hub);
            }