日期:2014-05-18  浏览次数:20820 次

不同类之间相互调用公共成员的问题
1.
有两个类:MainWindows(主要工作类,负责界面,更新状态及显示数据),Controller(控制类,实现具体的操作)

在 MainWindows 里建立了一个 public 的名为 proc 的 Process 对象,用于后台调用控制台发送命令实现具体操作,但是模块化的具体实现方法写在 Controller 里。但发现在 Controller 类的方法里无法访问到这个在 MainWindows 建立的 proc 对象,无论 proc 是不是public (输入proc没有出现智能提示)。
基础不牢吃亏了,苦思冥想,于是只能让 Controller 继承了 MainWindows 类,这时候可以访问到 proc 对象了,出现智能提示了。不过这应该不是建议的解决方法吧?

2.
同样的,在 Controller 里干完活,要去更新 MainWindows 里的界面上的显示值,也是访问不到。哪怕我把 textbox1 的 modifiers 修改为 public,也还是无法在 Controller 类里进行访问并修改

这些类都是动态类,需要生成实例的,难道我要都改成静态类供全局访问?应该有更推荐的解决方案吧?

3.
另外,public和protected的区别我糊涂了。不是说public的在任何地方都能访问到么?那么为什么上述情况无法访问?

4.
MainWindows 类是窗体类,Controller 继承后 protected 可以访问到 MainWindows 里的成员。但是生成 Controller 实例的同时,会调用 MainWindows 的默认构造函数(Controller 没有自定义构造函数),也就是生成窗体的代码 InitializeComponent(),那么为什么不会因此而出现两个窗体呢?

------解决方案--------------------
Controller 类是控制类就不应该去调用MainWindows中的任何元素了。

由MainWindows来给Controller类中的方法传递参数让改方法返回你想要的结果就行了!
------解决方案--------------------
你访问不到,那是你写的有问题,至少你要有mainform的实例,通过实例去访问属性,除非你是static属性,直接通过类名访问