如何解决 "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);
我正在创建一个 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);