C# 从属性对象访问父类属性
假设您有以下设计:C# 从属性对象访问父类属性,c#,C#,假设您有以下设计: ClassA ClassC ClassB Property: object of type ClassA Property: object of type ClassC 如果ClassB有一个类型为ClassA的对象,ClassA有没有办法访问ClassB的成员?换句话说,假设有一个ClassA(比如ClassA.getvegets())的方法,但是ClassA方法需要访问ClassB类型ClassC的属性,这有可能吗?看起来你在混合两个概念: 对对象
ClassA
ClassC
ClassB
Property: object of type ClassA
Property: object of type ClassC
如果
ClassB
有一个类型为ClassA
的对象,ClassA
有没有办法访问ClassB
的成员?换句话说,假设有一个ClassA
(比如ClassA.getvegets()
)的方法,但是ClassA
方法需要访问ClassB
类型ClassC
的属性,这有可能吗?看起来你在混合两个概念:
- 对对象实例的引用
- 访问对象的成员/方法/属性的权限
一旦ClassA引用了ClassB的实例,它就只能访问标记为
public
的ClassB方法。查看访问修饰符
以了解更多信息。在不查看任何传统代码的情况下,最好的方法是将所需信息作为参数传递给getGreens
方法
理想情况下,您应该将所有必需的数据作为参数传递,以使方法非常独立,而不依赖于某些全局状态
这是假设当前的设计是最优的;通过更改设计细节可以很好地解决这一问题,但如果没有看到更多的代码,我们就无法判断问题。没有此设置,没有。您必须重新构造设计。是什么阻止你把它当作论点来传递?@Jeroenvanevel这不是多余的吗?我的意思是,您基本上需要调用
ClassBobj.ClassAprop_obj.getvegets(ClassBobj.ClassCprop_obj)
。是的,您必须以某种方式提供对ClassB实例的ClassA访问。void ClassA.GetVegitables(ClassB argumentName)。然后在B类中,你做PropertyA.GetVegitables(这个)@用户3175663:是的,这正是我要做的。这可能只是一个更深层次的设计缺陷,但如果没有更多的代码,我们就无法判断它。@Jeroenvanevel Perfect,我想我已经具备了我所需要的。如果你把这个写进答案里,我会把它标为答案。