导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

两个类通信的问题,在线等

newmankind 2011-04-02 08:47:48
现在遇到一个难题,就是两个类之间要互相主动通信,类似于网中的收包发包,而且是异步的。就是A->B同时B->A.
想了很久,各条路上都遇到了麻烦
1、通过委托方式,A中初始化了B解决了单向主动通信,但是反过来则不行
2、建立了第三方中间类C,A,B中都实例化了C,但是参数传递遇到问题,如何将C的对象c如何通过构造函数传递到AB中,
并赋值给AB中的某个private C 的成员,甚是不解。
请达人指教!!谢谢!!
...全文
125 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
newmankind 2011-04-02
[Quote=引用 4 楼 real_monster 的回复:]

使用静态c ,实例化应该有点问题吧,只能是c来做数据传递? 如果静态c ,a和b能主动拿数据
[/Quote]

不是很理解这句话的意思,我命名的C是纯委托和事件,在实例化是同+=eventHandler方式在A和B中实现。
不知道这样是否存在什么问题?
回复
newmankind 2011-04-02
谢谢楼上两位!
回复
newmankind 2011-04-02
我暂时的想法,是A,B互相不知道自己的存在,有一个管道能通过这个管道建立起联系,有点类似TCP/IP的协议
回复
超银 2011-04-02
使用静态c ,实例化应该有点问题吧,只能是c来做数据传递? 如果静态c ,a和b能主动拿数据
回复
newmankind 2011-04-02
楼上兄台,惭愧,惭愧,根基很浅,刚刚辞职,所以闲来无事写写程序,非常感谢!
回复
兔子党-顾问 2011-04-02
设计模式多么的重要啊。
观察者模式可以实现广播通知的效果。
如果单纯的是2个类,彼此都提供一个使用对方来创建对象的方式就可以了。
比如,简单的这样做。

public class A
{
public B inner = null;
public A(B other)
{
inner = other;
other.inner = this;
}
public A()//也需要一个无参的
{
}
}

public clBss B
{
public A inner = null;
public B(A other)
{
inner = other;
other.inner = this;
}
public B()//也需要一个无参的
{
}
}

使用

A o1 = new A();
B o2 = new B(o1);

回复
发动态
发帖子
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.