问题描述
问题如下:现在有一个classA,该类中有一个事件message;新建一个类classB,我希望在classB中能够完整的继承message事件;(代码如何处理??)而后classC:classB,我可以使用message事件。不知道我的问题表述清楚没有,希望得到各位大侠的回答,谢谢啊
解决方案
本帖最后由 gaishe 于 2011-06-10 16:31:58 编辑
解决方案二:
现在的不完整吗...
解决方案三:
只要该eventhandler是protected或public的,就可以用,你可以用改eventhandler绑定a,b,c任何一个中的方法
解决方案四:
http://www.cnblogs.com/anjou/archive/2007/06/19/788987.html
解决方案五:
直接继承就可以了。子类不需要额外的代码。
解决方案六:
4楼:不知道直接继承如何实现?
解决方案七:
引用楼主gaishe的回复:
问题如下:现在有一个classA,该类中有一个事件message;新建一个类classB,我希望在classB中能够完整的继承message事件;(代码如何处理??)而后classC:classB,我可以使用message事件。不知道我的问题表述清楚没有,希望得到各位大侠的回答,谢谢啊
我个人感觉,在C中你完全可以使用事件message.不明白你说的完整的继承是什么意思
解决方案八:
引用3楼wknight_it的回复:
http://www.cnblogs.com/anjou/archive/2007/06/19/788987.html
这个资料我看了一下,还是没看明白。请问:我的是3个类,A类是现有的封装的类,不能修改,B类是我自己要封装的类,我希望在B中继承A中的事件,进而使得C类能够使用B类中的事件。
解决方案九:
引用6楼kingdom_0的回复:
引用楼主gaishe的回复:问题如下:现在有一个classA,该类中有一个事件message;新建一个类classB,我希望在classB中能够完整的继承message事件;(代码如何处理??)而后classC:classB,我可以使用message事件。不知道我的问题表述清楚没有,希望得到各位大侠的回答,谢谢啊我个人感觉,在C……
请问怎么c中怎么能够直接使用A中的事件呢?
解决方案十:
本帖最后由 caozhy 于 2011-06-10 16:49:32 编辑
解决方案十一:
引用9楼caozhy的回复:
引用5楼gaishe的回复:4楼:不知道直接继承如何实现?C#code#regionAssemblySystem.Windows.Forms.dll,v4.0.30319//C:ProgramFilesReferenceAssembliesMicrosoftFramework.NETFrameworkv4.0ProfileClien……
我的问题是不是没问清楚啊,我是想在C类中使用B类在A类中继承的事件。就是说A类中原来有一个事件,我需要在B类中继承(或者是说我需要在B类中有一个同A类中有同样功能的事件),而后我可以使用B类中的事件,而不直接使用A类中的事件。
解决方案十二:
貌似不行吧,编译出错的说,话说在子类中可以为事件绑定方法不就好了,想触发,就调用基类的方法来触发
解决方案十三:
引用10楼gaishe的回复:
引用9楼caozhy的回复:引用5楼gaishe的回复:4楼:不知道直接继承如何实现?C#code#regionAssemblySystem.Windows.Forms.dll,v4.0.30319//C:ProgramFilesReferenceAssembliesMicrosoftFramework.NETFramewor……
你到底想说有个事件还是有个事件处理函数?
解决方案十四:
字段,常量,事件都是类的数据。个人感觉能不能访问关注访问修饰符就可以了。
解决方案十五:
引用2楼dazhabai的回复:
只要该eventhandler是protected或public的,就可以用,你可以用改eventhandler绑定a,b,c任何一个中的方法
对呀
解决方案:
引用12楼caozhy的回复:
引用10楼gaishe的回复:引用9楼caozhy的回复:引用5楼gaishe的回复:4楼:不知道直接继承如何实现?C#code#regionAssemblySystem.Windows.Forms.dll,v4.0.30319//C:ProgramFilesReferenceAssembliesMicrosoftF……
谢谢你啊!我要说的是事件,不是函数:A类中原来有一个事件,我需要在B类中实现一个同A类中有同样功能的事件。
解决方案:
引用15楼gaishe的回复:
引用12楼caozhy的回复:引用10楼gaishe的回复:引用9楼caozhy的回复:引用5楼gaishe的回复:4楼:不知道直接继承如何实现?C#code#regionAssemblySystem.Windows.Forms.dll,v4.0.30319//C:ProgramFilesReferenceA……
结果把A类的隐藏?
解决方案:
???????直接继承就ok了B里一行代码都不要处理lz啊,你想想看如果我继承了了微软提供的Button写了一个myButton,你认为这个myButton他会没有Click事件???
解决方案:
引用16楼caozhy的回复:
引用15楼gaishe的回复:引用12楼caozhy的回复:引用10楼gaishe的回复:引用9楼caozhy的回复:引用5楼gaishe的回复:4楼:不知道直接继承如何实现?C#code#regionAssemblySystem.Windows.Forms.dll,v4.0.30319//C:Prog……
不知道您说的隐藏是什么意思?就是我想直接使用B中的事件,而不使用A中的事件。
解决方案:
我建议你用NVI(Non-VirtualInterface)模式来设计。也就是你看到的OnXXX()的虚方法,然后让子类重写。
解决方案:
引用18楼gaishe的回复:
引用16楼caozhy的回复:引用15楼gaishe的回复:引用12楼caozhy的回复:引用10楼gaishe的回复:引用9楼caozhy的回复:引用5楼gaishe的回复:4楼:不知道直接继承如何实现?C#code#regionAssemblySystem.Windows.Forms.dll,v……
对,就是这个意思。
解决方案:
引用19楼caozhy的回复:
我建议你用NVI(Non-VirtualInterface)模式来设计。也就是你看到的OnXXX()的虚方法,然后让子类重写。
好像还挺麻烦。小生愚钝,有没有具体的例子啊?
解决方案:
引用17楼wanghui0380的回复:
???????直接继承就ok了B里一行代码都不要处理lz啊,你想想看如果我继承了了微软提供的Button写了一个myButton,你认为这个myButton他会没有Click事件???
如果是我又有一个myButtonButton继承于myButton呢?如何保证我的myButtonButton也有click事件呢?
解决方案:
基类里使用publicvoidXXX(){onXXX();}protectedvirtualonXXX(){}子类使用protectedoverideonXXX(){}