1
我有被宣布像这样的方法:正则表达式将委托语法更改为Lambda表达式?
public ButtonObject CreateStandardButton(type1 arg1, type2 arg2,
ItemClickEventHandler eventHandler, type3 arg3, type4 arg4)
ItemClickEventHandler具有通常的(发送者,E)的参数。但是,我们从来没有最终使用的(发件人,E)的参数,所以我们有这样一串电话:
myButton = CreateStandardButton(myArg1, myArg2,
(sender, e) => MyButtonClick(), myArg3, myArg4);
和,因为这个项目升级为.NET 3.5通过的方式约15% ,许多人呼吁这样的:
myButton = CreateStandardButton(myArg1, myArg2,
delegate { MyButtonClick(); }, myArg3, myArg4);
我们把这种方法有很多,所以它是真烦人不得不一遍又一遍地添加拉姆达未使用参数。因此,我想改变这一切惯例这个过载:
public ButtonObject CreateStandardButton(type1 arg1, type2 arg2,
Action eventHandler, type3 arg3, type4 arg4)
这使我们能够做到这一点,而不是:
myButton = CreateStandardButton(myArg1, myArg2,
MyButtonClick, myArg3, myArg4);
的问题是,旧的委托语法的用法将需要强制转换为(Action)
,因为它们对编译器不明确。所以,为了消除烦恼,我想要做一个查找和替换,大概是用正则表达式。
这样做的正则表达式是什么?
我不认为他需要匹配完整的代表表达式。他实际上只需要匹配`delegate`关键字本身,大括号中的部分可以保持原样(它将成为语句lambda)。 – 2009-07-31 03:41:00