gpt4 book ai didi

c# - 序列化和反序列化类中的静态成员?

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:29 28 4
gpt4 key购买 nike

我在我的简单项目中遇到了一个问题。我想建立一个书店经理来跟踪进入商店的书籍(在账单上,来自供应商)和我出售时离开商店的书籍。为了跟踪书籍,我将它们存储在字典中, 是书籍的 ISBN。它看起来像这样:

Dictionary<string,IBook> BOOKS;

此外,我还需要另一个字典来跟踪来自不同供应商的账单。那个看起来像这样:

Dictionary<string,Supplier> SUPPLIERS;

本例中的是供应商名称。每个供应商都有一个账单列表作为数据字段:

[Serializable]
public class Supplier
{
private List<Bill> supplierBills;
private string supplierName;
....
}

现在每个 Bill 看起来像这样:

[Serializable] 
public class Bill
{
private List<IBook> billBooksList;
private double billTotalDue;
private DateTime billCreationDate;
private DateTime billDueDate;

public static int billNumber = 0;
}

当我关闭应用程序时,我序列化 BOOKS 字典和SUPPLIERS 字典。当我打开它时,会发生反序列化。我的问题与 Bill 类的静态成员 billNumber 有关。它不会序列化。每次我打开应用程序时,变量都会重置为 0。

我尝试使用 how to serialize and deserialize static member 中的示例但我没有序列化直接类中的静态成员(在我的例子中是 Supplier 类)。

感谢任何帮助:)

最佳答案

billNumber 不应是staticlastBillNumber 可以是static。我认为您的所有帐单都不能共享相同的 billNumber :-)

现在...假设您必须保存 lastBillNumber(以便您的下一张账单可以是 lastBillNumber+1。正确的位置是单例类

class BillNumberGenerator
{
protected int LastBillNumber;

public GetNewBillNumber()
{
LastBillNumber++;
return LastBillNumber;
}
}

static BillNumberGenerator MyBillNumberGenerator = new BillNumberGenerator();

然后你序列化它。所以你必须序列化SupplierBillBillNumberGenerator

关于c# - 序列化和反序列化类中的静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18375009/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com