从列表所属的类访问字段

时间:2012-02-23 16:55:38

标签: c#

让我说我有以下课程:

class Shape
{
    public int widht;

    public List<Point> points;
}

并且在Point类中我想使用类Shape中的这个widht属性,所以如果“point”属于该列表,我希望有可能使用“容器”属性。我也想序列化然后类Shape,所以我不认为我可以使用带参数的构造函数。

编辑: 我会在我的应用中说出它的样子: 我有类设备

class Device
{
string connection;
List<Task> tasks;
}

和任务

class Task
{
  void DoTask()
  {
     and here i need the connection
  }
}

所以我只想做它然后foreach(task in task)task.DoTask()但我必须传递额外的“this”就像task.DoTask(this)或者我认为我应该访问的连接我的容器,如果它允许我。

2 个答案:

答案 0 :(得分:3)

对象的“所有者”没有一般概念。毕竟,相同的Point引用可能出现在几个地方。这样做的愿望通常表明设计气味。如果您需要为Point对象提供更多信息,那么大概就是当您使用做某事时 - 所以将该信息传递给适当的方法。

答案 1 :(得分:0)

最简单的方法之一是在这两者之间建立明确的关联。例如:

public class Point {

   Shape shape; 

   public Point( Shape shape ) {
      this.shape = shape;
   }

}

在此特定实现中,每个点指向单个形状。您当然可以从点类中访问形状属性。

如果可以控制序列化应该不是问题。