C#如何在类实例之间保留数据?

时间:2017-06-26 20:28:34

标签: c# instance-variables

对于模糊标题的道歉,但我不确定如何解释它。

给出A,B和C类。

如果A类包含List,那么如何保存该列表中的数据,以便B类和C类可以访问列表中的数据(即使B和C都是他们自己的A类实例)?

类B和C必须创建自己的实例(这不受我的控制)。

我使用这个类作为我的对象数据源,让我们说我不能修改C类的内容。

以下是一个示例类:

[DataObject]
public class Product
{
    public string Name {get; set;}
    public string Category {get; set;}
    public int ID {get; set;}

    public List<Product> ProductList =
        new List<Product>();

    [DataObjectMethod(DataObjectMethodType.Select)]
    public IEnumerable<Product> GenerateReport()
    {
        return ProductList;
    }

}

2 个答案:

答案 0 :(得分:3)

使用此处定义的静态:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/static

然后,您将能够访问类属性而不是实例属性。

答案 1 :(得分:1)

您有多种方法可以实现此目的。如在其他答案中所述,您可以使用A类中的静态属性/字段来访问列表。

第二个选项是使用依赖注入。创建类B和类C的构造函数,以便它们必须通过传入A的实例来初始化。 e.g。

class A
{
  public List<object> AList {get;set;}
}

class B
{
  private A localInstance;
  public B(A instance)
  {
    localInstance = instance;
  }

  public void SomeMethod()
  {
     // access to list from instance of A
     var a = localInstance.AList
  }
}

// Similar implementation for class c