如何解决“无法分配给‘this’”的问题因为它是只读的”错误 c#

发布于 2025-01-19 01:03:37 字数 1349 浏览 0 评论 0原文

我正在创建一个使用DataTable创建自己的自定义表的类。

我想要它,以便如果带有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));

我该如何执行此操作?

如果需要的话,课程的完整代码:

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

I am creating a class that creates my own custom table using DataTable.

I want it so that if a json file with the DataTable's info is on my computer; the code will put the json file into that instance of the object (done in the constructor)

This is how i am trying to do it

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

this line is causing the error

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

How can I do this without the error?

The full code of the class if needed:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑忘罢 2025-01-26 01:03:37

这样的事情应该解决您的问题:

您内部类创建以下函数:

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

您的表构造函数现在应该看起来像这样:

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

然后您可以在ur code var newtable = table.create中使用它(jsonfile);

Something like this should solve your problem:

Inside you Table class create the following function:

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

Your table constructor should look now like this:

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

Then you can use it in ur code var newTable = Table.Create(jsonFile);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文