以下是两个具有父/子关系的类(取自Unity3D)
public class GameObject
{
...
public T AddComponent<T>() where T : Component;
...
}
public class Component
{
...
public GameObject gameObject { get; }
...
}
由于只有getter是公共的,它们如何实现设置Component gameObject字段的值? (Component类中没有其他方法采用GameObject)
我问这个是因为我使用了同样的设计,我想让setter变得私密。
由于
答案 0 :(得分:0)
它可能有一个internal
setter,或者可能是GameObject
被传递到构造函数并设置在那里?或者它可以使用反射直接设置字段(或调用其他不可用的访问器),但我对此表示怀疑。
答案 1 :(得分:0)
向GameObject添加组件时,很可能是内部setter分配组件的父组件(GameObject)。因此,在这种情况下,设置组件的GameObject的唯一方法是将组件添加到GameObject。
您可以与winForms进行比较,如果将子控件添加到父控件的控件集合中,则会为您设置子控件的父级。