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

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

鉴于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 ProductList = new List(); [DataObjectMethod(DataObjectMethodType.Select)] public IEnumerable GenerateReport() { return ProductList; } } 

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

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

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

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

 class A { public List 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