到/从文件的数据序列化/反序列化

我正在使用以下方法对数据进行序列化/反序列化:

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

但是这些都不起作用,甚至有可能还是我应该停止浪费时间并指定数据类型?

gay1314 回答:到/从文件的数据序列化/反序列化

  

甚至有可能

排序。这有效:

float[][] data = null;
data = data.ReadFromFile( . . .);
  

我应该停止浪费时间并指定数据类型吗?

是的。如果您这样指定变量,则只需键入一次类型名称。

var data = FileOps.ReadFromFile<float[][]>(folderName,fileName,saveFormat);
本文链接:https://www.f2er.com/2960194.html

大家都在问