如何跟踪类中另一个类的实例?

时间:2015-06-17 09:29:36

标签: c#

我创建了一个Sales类,用于跟踪产品的名称,销售时间和价格。我有一个名为Client的类。如何在销售中跟踪客户类的实例?

 class Sales
  {
    string productname;
    double price;
    private DateTime _salesDate;

    public Sales(string productname, double price)
    {
        this.productname = productname;
        this.price = price;
        _salesDate = DateTime.Now;
    }

5 个答案:

答案 0 :(得分:1)

在我看来,最简单的方法就是将属性添加到Client类型的Sales类中:

class Sales
{
    string productname;
    double price;
    private DateTime _salesDate;

    public Sales(string productname, double price, Client soldTo)
    {
        this.productname = productname;
        this.price = price;
        this.SoldTo = soldTo;
        _salesDate = DateTime.Now;
    }

    public Client SoldTo {get; private set;} // Added public to the property
}

如果单个Sale可以是多个客户端,请在构造函数中使用List<Client>而不是单个Client作为属性类型。

答案 1 :(得分:0)

List<Client> _soldToClients属性添加到您的销售类

答案 2 :(得分:0)

你走了:

class Sales
{
    string productname;
    double price;
    private DateTime _salesDate;
    private List<Client> _SoldTheItemTo;

    public Sales(string productname, double price)
    {
        this.productname = productname;
        this.price = price;
        _salesDate = DateTime.Now;

        Client C = new Client();
        C.Name = "XYZ";
        _SoldTheItemTo.Add(C);
    }
}

答案 3 :(得分:0)

为产品及其相关属性创建类。

public class Product
{
     double price;
     string productname;

     public Product(string productname, double price)
     {
        this.productname = productname;
        this.price = price;
     }
}

和你的销售类,

public class Sale
{
     List<Product> Products;
     Client _SoldTheItemTo;

     public Sale(List<Product> products, Client client)
     {
        _SoldTheItemTo = client;
        Products = products;
     }
}

尝试将每个对象分开,因为您知道销售有多个产品,您将为每个客户创建单独的发票,因此无需保留客户列表,保留产品列表并根据您的需要进行管理。

答案 4 :(得分:0)

如果你想用松散耦合的正确方法来开发它,那么你应该在“观察者设计模式”中实现它。 Observer定义了一对多关系,这样当一个对象改变状态时,其他对象将自动得到通知和更新。 浏览以下链接,正确学习然后实施您的问题:

Observer Design Pattern Reference 1

Observer Design Pattern Reference 2