0

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

        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);
        }

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

4

1 回答 1

1

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

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

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

SomeType obj = await GetObject<SomeType>();

尽管这不能直接与您当前的代码一起使用,但您必须以某种方式将ReadAllTextAsyc返回的内容(大概string)转换为T.

于 2013-10-01T12:06:53.273 回答