等待读取和写入隔离存储的通用方法

时间:2013-10-01 09:38:56

标签: c# generics asynchronous async-await isolatedstorage

我正在尝试使用PCLStorage创建两种写入和读取隔离存储的方法,但是我在读取(Get)部分时遇到了一些问题:

        public async static Task<T> GetObject()
        {
            IFolder rootFolder = FileSystem.Current.LocalStorage;
            IFolder folder = await rootFolder.CreateFolderAsync("cache", CreationCollisionOption.OpenIfExists);
            IFile file = await folder.GetFileAsync(T.GetType().Name);

            return await file.ReadAllTextAsync();
        }

        public async static void SetObject<T>(T obj)
        {
            IFolder rootFolder = FileSystem.Current.LocalStorage;
            IFolder folder = await rootFolder.CreateFolderAsync("cache", CreationCollisionOption.OpenIfExists);

            await folder.CreateFileAsync(obj.GetType().Name, CreationCollisionOption.ReplaceExisting);
        }

我在这里要做的是为我的对象创建两个通用函数,即我想要存储在独立存储中的函数。我的问题是我坚持如何“泛化”GetObject,因为它返回Task<TYPE>,例如Task<string>。通常T是使用方法名称定义的,但这里需要使用任务定义。

1 个答案:

答案 0 :(得分:1)

它仍然有效,你必须在方法名称之后定义T:

public async static Task<T> GetObject<T>()

如果你有,那么你可以这样称呼它:

SomeType obj = await GetObject<SomeType>();

虽然这不会直接与您当前的代码一起使用,但您必须以某种方式将ReadAllTextAsyc返回的内容(可能是string)转换为T