我正在使用以下方法对数据进行序列化/反序列化:
public static T ReadFile<T>(string path,string fileName,SaveFormat saveFormat)
{
fileName = fileName.CaseInsensitiveContains(".") ? fileName : fileName + "." + saveFormat.ToString();
FullFileName = Path.Combine(path,fileName);
if (!File.Exists(FullFileName))
{
Debug.Print(FullFileName + " does not exist...");
return default;
}
switch (saveFormat)
{
case SaveFormat.BIN:
return ReadFromBinaryFile<T>(FullFileName);
case SaveFormat.JSON:
return ReadFromJsonFile<T>(FullFileName);
case SaveFormat.XML:
return ReadFromXmlFile<T>(FullFileName);
default:
return default;
}
}
用法示例:
DataEx1 = FileOps.ReadFile<MyCustomClass>(folderName,fileName,saveFormat);
DataEx2 = FileOps.ReadFile<Float[][]>(folderName,saveFormat);
它正在工作,但是我更愿意将它用作扩展方法,而不必指定数据类型,因为我一直会在之前声明变量,这有可能吗?
float[][] data;
data.ReadFromFile(folderName,saveFormat);
我尝试过:
public static T LoadFromFile1<T>(this T data,string path,FileOps.SaveFormat saveformat = FileOps.SaveFormat.JSON)
{
return FileOps.ReadFile<T>(path,saveformat);
}
return FileOps.ReadFile <typeof(data)> (path,saveformat);
return FileOps.ReadFile <data.GetType()> (path,saveformat);
但是这些都不起作用,甚至有可能还是我应该停止浪费时间并指定数据类型?