您的位置:首页 > 编程语言 > C#

c#通过委托delegate与Dictionary实现action选择器代码举例

2014-08-11 00:00 801 查看
委托是C#中新加入的一个类型,可以把它想作一个和Class类似的一种类型,和使用类相似,使用一个委托时,需要两个步骤,首先你要定义一个委托,就像是定义一个类一样;然后,你可以创建一个或多个该委托的实例。

在实际开发中大家一定都遇到过这种情况:
1.前台页面信息是通过Ajax请求的方法加载的;
2.或者是通过请求本页面加载的;
3.请求的页面不仅仅是一个Http请求
在这咱情况下我们一般会加一个action的参数,用于区别是应该调用那个方法,前台的发起我就不多说了,这个大家都知道,关键是后台应该怎么写呢?通常情况下一般是这样的:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
//取出action的值


string
action=context.Request[
"action"
];


if
(action==
"post1"
)


{


//调用第一个Post方法


}


else
if
(action==
"post2"
)


{


//调用第一个Post方法


}


else
if
(action==
"post3"
)


{


//调用第一个Post方法


}


else


{


//调用在没有找到action对应方法时执行


}
我感觉这种情况是比较多的,其实而可以使用Dictionary与delegate配置的方法来实现会更灵活一些,意思就是把方法生成一个List形式的,我一直是这么用的,今天正好看到同事也是这么写的,所以就拿出来给大家分享一下。因为我发现还有少人在用第一种方式,这里算是给大家提供一个解决方案吧。
具体代码如下:
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

//定义一个委托


private
delegate
void
actionByMain(HttpContextcontext);


//定义一Key,Value的键值对,大家注意这里把委托放进去了


private
static
Dictionary<
string
,actionByMain>mainList=
new
Dictionary<
string
,

actionByMain>();


public
void
ProcessRequest(HttpContextcontext)


{


string
action=
string
.Empty;


if
(
string
.IsNullOrEmpty(context.Request[
"action"
]))


{


return
;


}


action=context.Request[
"action"
];


//先检查一下有没有这个action


if
(mainList.ContainsKey(action))


{


mainList[action](context);
return
;


}


}


//添加action对应方法的列表


static
void
addMainList()


{


mainList.Add(
"post1"
,
delegate
(HttpContextcontext)


{


context.Response.Write(
"成功"
);


});


mainList.Add(
"post2"
,
delegate
(HttpContextcontext)


{


context.Response.Write(
"成功"
);


});


mainList.Add(
"post3"
,
delegate
(HttpContextcontext)


{


return
;


});


}
转载请注明:文章转载自:[169IT-最新最全的IT资讯]
本文标题:c#通过委托delegate与Dictionary实现action选择器代码举例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: