用接口实现事件的一种方法,只是玩玩。

本文探讨了一种使用接口实现事件的思路,通过创建自定义服务器控件和定义接口,实现了控件内外的方法调用、属性传递等功能。虽然存在需要为每个事件定义单独类的不便,但作为一个玩耍的尝试,作者强调这并非证明接口优于委托,而是提供另一种可能性。文中还提及文件下载和上传的问题。
摘要由CSDN通过智能技术生成

 

  前一阵子,firelong说,应该用接口实现事件,而不应该用委托。我就希望他能给出一个用接口实现事件的方法,我是一直等呀,等到了现在也没有看到。

 

  昨天又看到了,Snake@Net  说不要把接口和委托给混淆了的文章。也许我就把他们给混淆了吧。他的文章没仔细看,不过我倒是突然想到了一个用接口实现事件的方法,写了一个简单的demo测试了一下,居然还成功了。

 

  所以拿出来抖落抖落。

 

  这个只是体现了一个简单的思路,我并不想用他来证明什么,只是写着玩的。

 

==========================

 

  建立两个项目,一个是web项目,一个是自定义服务器控件的项目。

 

 

 

  服务器控件的项目里定义一个控件(EventTest)和一个接口(IEvent)。

    代码如下

 

 

代码
namespace  Nature.MyEvent
{
    
///   <summary>
    
///  定义一个接口
    
///   </summary>
     public   interface  IEvent
    {
        
string  MyName
        {
            
get ;
            
set ;
        }

        
string  Test
        {
            
get ;
            
set ;
        }

         
void  Event(System.Web.UI.Page page);

    }
}

 

 

 

 

代码
namespace  Nature.MyEvent
{
    [DefaultProperty(
" Text " )]
    [ToolboxData(
" <{0}:EventTest runat=server></{0}:EventTest> " )]
    
public   class  EventTest : WebControl, INamingContainer 
    {
        TextBox txt 
=   new  TextBox();
        HtmlInputButton btn 
=   new  HtmlInputButton();
              
        
private  List < IEvent >  _EventList  =   new  List < IEvent > () ;

        
public  List < IEvent >  EventList
        {
            
get  {  return  _EventList; }
            
set  { _EventList  =  value; }
        }

        
protected   override   void  CreateChildControls()
        {
            
base .CreateChildControls();

            
// 创建一个文本框
            txt.ID  =   " Txt_Test " ;
            
this .Controls.Add(txt);
       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值