2014-01-09 197 views
0

假设你有以下设计:访问父类对象属性的

ClassA 

ClassC 

ClassB 
    Property: object of type ClassA 
    Property: object of type ClassC 

如果ClassBClassA类型的对象,有没有什么办法了ClassA能够访问ClassB成员?换句话说,有一种方法ClassA(说ClassA.GetVegetables()),但ClassA方法需要访问ClassBClassC类型的属性,这是可能的吗?

+1

没有这个设置,没有。你将不得不重构你的设计。什么阻止你将它作为一个参数传递? –

+0

@JeroenVannevel这不是多余的?我的意思是,你将不得不基本调用'ClassBobj.ClassAprop_obj.GetVegetables(ClassBobj.ClassCprop_obj)'。 – user3175663

+0

是的,你必须提供一些ClassA实例的ClassA访问。 void ClassA.GetVegitables(ClassB argumentName)。然后在ClassB中做PropertyA.GetVegitables(this); – Thraka

回答

0

没有看到任何辅助代码,最好的方法是只需将所需的信息作为参数传递给您的方法。

理想情况下,您应该传递所有必需的数据作为参数,以使方法非常独立,而不依赖于某种全局状态。

这是假定目前的设计是最优的;这可以通过改变设计细节来解决,但是如果没有看到更多的代码,我们就无法说清楚。

0

看起来你混合2个概念一起:

  • 引用的对象的实例
  • 允许获取成员/方法/对象的属性

无论是否ClassA的可请致电任何 ClassB的方法取决于ClassA是否具有对ClassB(第一个概念)的引用。这可以通过将ClassB的实例传递给ClassA的构造函数来实现。

一旦ClassA具有对ClassB实例的引用,它只能访问标记为public的ClassB方法。查找access modifiers以获取更多信息。