从组合类访问Parent / Owning类变量?

时间:2015-03-01 21:31:03

标签: c# composition

原谅我,因为我知道我的措辞太可怕了。我只是举个例子。

public class MainClass{
    public int someVariable;
    public List<HasAClass> cList = new List<HasAClass>();

    addHasAClass(HasAClass c){
        cList.Add(c);
    }

}
public class HasAClass{
    public HasAClass(){
        //Modify someVariable in some way????
    }
}
public class HasASubClass : HasAClass{
    public ComposedClass(){
        //Modify someVariable in some way???
    }
}

我无法为这些问题找到合适的词语,但这是我要做的事情: 我正在为类似于龙与地下城的RPG创建一个辅助工具。每个角色都有各种特殊能力,可以某种方式影响角色(包括消极和积极)。我正在尝试使用各种子类来存储相关信息,并在不同的时间点添加到角色。我无法弄清楚当HasA类的实例被添加到它时,如何修改角色的属性(我在我的例子中称之为Main Class)。

1 个答案:

答案 0 :(得分:0)

HasAClass 需要对拥有实例的引用,以便它可以向父级询问值并在需要时更新它们...

public class HasAClass
{
    private MainClass _mainClass;
    public HasAClass(MainClass mainClass)
    {
        _mainClass = mainClass;
        _mainClass.someVaraible = 42;
    }
}

然后,您需要在创建时将所有者引用传递给 HasAClass 的构造函数。如果在创建实例时无法做到这一点,那么您需要在创建实例后将其指定为属性。例如在 addHasAClass 方法内部。