2012-02-23 81 views
0

讓說,我有以下類:接入領域,其中列表屬於

class Shape 
{ 
    public int widht; 

    public List<Point> points; 
} 

,並在課堂上點我想用這個widht財產類的形狀,因此,如果「點」屬於這個名單我希望有可能使用「容器」屬性。我也想序列化然後類Shape,所以我不認爲我可以使用構造函數的參數。

編輯: 我會說這看起來像我的應用程序: 我有一流的設備

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

和任務

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

所以我只是喜歡這樣做則的foreach(任務在任務)task.DoTask()但我必須傳遞額外的「this」像task.DoTask(this)或連接,我認爲我應該有我的容器acces,如果它允許我。

+1

好的。你的問題是什麼? – asawyer 2012-02-23 16:56:41

+0

也許脫離主題,爲什麼點有一個寬度? – 2012-02-23 16:57:25

+0

我怎麼可能訪問寬度從類點? – kosnkov 2012-02-23 16:57:46

回答

3

沒有對象的「所有者」的一般概念。畢竟,同樣的Point參考可能出現在幾個地方。這樣做的願望通常表明設計的氣味。如果你需要給Point對象提供更多信息,那大概是當你在做它時 - 它會將這些信息傳遞給適當的方法。

+0

喬恩我覺得有時候你不是一個人只有智能stackOverflow機器人:) – kosnkov 2012-02-23 17:00:39

0

最簡單的方法之一是建立這兩者之間的明確關聯。例如:

public class Point { 

    Shape shape; 

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

} 

在這個特定的實現中,每個點指向單個形狀。你當然可以從點類中訪問形狀屬性。

如果您可以控制它,序列化不應該是一個問題。