2011-12-16 94 views
1

在這裏的一個項目,我們有一個對象ClassTest,其中有許多子對象:如何在創建期間訪問父對象(兩個對象)?

public class ClassTest 
{ 
    public bool[] abTestAvailable = new bool[_TESTS]; 


    public ClassTest_FCT_Extern Test_FCT_Extern = API.Serializer.Load<ClassTest_FCT_Extern>(API.Workstation.strPath_Hardware + "FCT_Extern.xml"); 
    // ... 

當時的想法是現在,這Test_FCT_ExternabTestAvailable初始化期間:

public class ClassTest_FCT_Extern 
{ 
    public bool TestAvailable 
    { 
     get { return API.Test.abTestAvailable[(int)ClassTest.IndividualTest.FCT_Extern]; } 
     set { API.Test.abTestAvailable[(int)ClassTest.IndividualTest.FCT_Extern] = value; } 
    } 

但失敗了,因爲在創建API.Test objects期間,創建了API.Test.Test_FCT_Extern。所以,在這個時候API.Test仍然不存在,並且數組abTestAvailable尚未初始化。

我已經找到了適合我們的案例的解決方案,但也許有更聰明的方法來訪問父母參數。

回答

0

在我們的情況下,解決辦法是使數組靜態:

public class ClassTest 
{ 
    public static bool[] abTestAvailable = new bool[_TESTS]; 

在創建對象之前

public class ClassTest_FCT_Extern 
{ 

    public bool TestAvailable 
    { 
     get { return ClassTest.abTestAvailable[(int)ClassTest.IndividualTest.FCT_Extern]; } 
     set { ClassTest.abTestAvailable[(int)ClassTest.IndividualTest.FCT_Extern] = value; } 
    } 

工作正常,無異常的靜態數組初始化。道德:儘可能使靜態!

+0

是的,就像一個魅力,直到你決定做另一個實例!爲什麼不在構造函數中初始化它?或者在二傳手?無處不在的房間! – neeKo 2011-12-16 10:43:34