C# 如何保留 class 个实例之间的数据?

C# how can I preserve data between class instances?

很抱歉标题含糊不清,但我真的不知道该如何解释。

给定 Class A、B 和 C。

如果 Class A 包含一个列表,我如何保留该列表中的数据以便 Class B 和 C 可以访问列表中的数据(即使 B 和 C 都是新的上自己的实例 Class A)?

Classes B 和 C 必须创建自己的实例(这是我无法控制的)。

我正在使用这个 class 作为我的 object 数据源,假设我无法修改 Class C.

的内容

下面是一个例子class:

[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;
    }

}

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

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

您有多种选择来实现这一点。如其他答案所述,您可以在 Class A 中使用 Static property/field 来访问列表。

第二种选择是使用依赖注入。创建 class B 和 class C 的构造函数,以便必须通过传入 A 的实例来初始化它们。 例如

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