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

标签 c# serialization dictionary

我在我的简单项目中遇到了一个问题。我想建立一个书店经理来跟踪进入商店的书籍(在账单上,来自供应商)和我出售时离开商店的书籍。为了跟踪书籍,我将它们存储在字典中, 是书籍的 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/

相关文章:

python - 修改纸条管道中的JSON

Python:将变量的值放入新字典中

c# - 当 OnClick 代码在后台执行时禁用 Winforms 按钮

xml - 如何在 Delphi 中往返格式化 double 值?

C# XML 序列化向后兼容性

Java - 如何将 ArrayList 对象写入 txt 文件?

javascript - 在 JavaScript 中连接数组字典

c# - 后台任务在调试期间在生命周期事件中可见但不会自动运行

c# - 日期范围内给定年份的天数

c# - 检查数据表中是否存在值?