2014-11-24 144 views
0

簡介

我想要一個解析器的實例傳遞給一個對象及其所有子對象,他們也可能有子對象。沒有包含其他實例的每個對象時,傳遞解析器的最佳方式是什麼?跨多個對象共享對象實例的最佳方式是什麼?

在深度

比方說,我有:

  • 的對象稱爲CustomControl,其中包含一個UIElementCollection財產,
  • 這是從CustomControl衍生其它的對象,因此有自己的藏品
  • 另一個對象Parser將執行IParser

Parser將包含一個方法:public static CustomControl[] Parse(string s)

我想解析器類傳遞給每CustomControl派生的對象和他們的孩子這也從CustomControl得出的。這些孩子可能有自己的孩子。

我將允許用戶將解析器更改爲實現IParser的另一個對象。

+8

如果方法是「靜態」,則不需要傳遞實例。 – 2014-11-24 15:32:00

回答

0

您可以直接將解析器引用傳遞給子節點。

當您將對象分配給變量(包括字段或參數)時,只會爲該對象分配一個引用,並且永遠不會創建副本,除非對象是值類型的值,例如intDateTime

如果您不希望孩子每個字段都包含一個引用解析器的字段,則可以將解析器引用分配給某個靜態成員,然後孩子可以從該靜態成員獲取解析器。

+0

我假設它可以修改靜態屬性,對吧?換句話說,要將解析器更改爲另一個類。 – 2014-11-24 15:48:24

+0

是的,您可以將引用更改爲另一個解析器,然後任何訪問靜態成員的子對象都將獲得對其他解析器的新引用。 – 2014-11-24 15:55:52

相關問題