我正在尝试使用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
是使用方法名称定义的,但这里需要使用任务定义。
答案 0 :(得分:1)
它仍然有效,你必须在方法名称之后定义T:
public async static Task<T> GetObject<T>()
如果你有,那么你可以这样称呼它:
SomeType obj = await GetObject<SomeType>();
虽然这不会直接与您当前的代码一起使用,但您必须以某种方式将ReadAllTextAsyc
返回的内容(可能是string
)转换为T
。