1

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

Dictionary<string,IBook> BOOKS;

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

Dictionary<string,Supplier> SUPPLIERS;

在这种情况下,关键是供应商名称。每个供应商都有一个账单列表作为数据字段:

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

现在每个账单看起来像这样:

[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。

我尝试使用如何序列化和反序列化静态成员的示例,但我不序列化直接类中的静态成员(在我的例子中是供应商类)。

任何帮助表示赞赏:)

4

1 回答 1

5

billNumber不应该staticlastBillNumber可以static。我不认为你所有的账单都可以共享相同的billNumber:-)

现在......假设您必须保存lastBillNumber(以便您的下一个账单可以是lastBillNumber+1。正确的地方是有一个单身课程

class BillNumberGenerator
{
    protected int LastBillNumber;

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

static BillNumberGenerator MyBillNumberGenerator = new BillNumberGenerator();

然后你序列化它。所以你必须序列化Supplier, Bill, BillNumberGenerator.

于 2013-08-22T08:25:57.860 回答