对于模糊标题的道歉,但我不确定如何解释它。
给出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;
}
}
答案 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