如何在创建期间访问父对象(两个对象)

本文关键字:对象 两个 访问 创建 | 更新日期: 2023-09-27 18:18:08

在这里的一个项目中,我们有一个Object 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_Extern在初始化时设置abTestAvailable:

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还没有初始化。

我现在已经找到了一个解决方案,但也许有更聪明的方法来访问父母的参数。

如何在创建期间访问父对象(两个对象)

在我们的例子中,解决方案是使数组静态:

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; }
    }

工作正常,没有例外。寓意:尽可能制作静态的!