如何解决 "cannot assign to 'this' as it is readonly" 错误 c#

How to solve a "cannot assign to 'this' as it is readonly" error c#

我正在创建一个 class,它使用 DataTable 创建我自己的自定义 table。

我想要它,这样如果我的计算机上有一个包含 DataTable 信息的 json 文件;代码会将 json 文件放入该对象的实例中(在构造函数中完成)

这就是我正在尝试的方式

public Table(string jsonfile)
    {
        if(File.Exists(jsonfile))
        {
            this = JsonConvert.DeserializeObject<Table>(File.ReadAllText(jsonfile));
            return;
        }
        formatRegisterTable(jsonfile);
    }

此行导致错误

this = JsonConvert.DeserializeObject<Table>(File.ReadAllText(jsonfile));

如何才能不报错?

如果需要 class 的完整代码:

using System.IO;
using System.Data;
using Newtonsoft.Json;

namespace abc.classess._table
{
     class Table
    {
        public DataTable mTable = new DataTable("table");
        private DataColumn mColumn;
        private DataRow mRow;
        

        public Table(string jsonfile)
        {
            if(File.Exists(jsonfile))
            {
                this = JsonConvert.DeserializeObject<Table>(File.ReadAllText(jsonfile));
                return;
            }
            formatRegisterTable(jsonfile);
        }

        private void formatRegisterTable(string jsonfile) 
        {
            //formatting table code

            File.WriteAllText(jsonfile,JsonConvert.SerializeObject(this));
        }
    }
}

像这样应该可以解决您的问题:

在你的内心 Table class 创建以下函数:

 public static Table Create(string jsonfile)
 {
       if (File.Exists(jsonfile))
       {
            Table table = JsonConvert.DeserializeObject<Table>(File.ReadAllText(jsonfile));
            return table;
        }
        
        return new Table(jsonfile);
  }

您的 table 构造函数现在应该如下所示:

 public Table(string jsonfile)
 {
    formatRegisterTable(jsonfile);
 }

然后你可以在你的代码中使用它var newTable = Table.Create(jsonFile);