将其他参数传递给方法

时间:2017-06-05 09:46:22

标签: c# asp.net-mvc delegates devexpress

我正在使用Devexpress文件上传控件。我正在使用overload类中的以下UploadControlExtension

public static UploadedFile[] GetUploadedFiles(string name, UploadControlValidationSettings validationSettings, EventHandler<FileUploadCompleteEventArgs> fileUploadCompleteDelegate);

我的完整事件方法签名如下:

public static void AttachmentUploadedCompleteEvent(object sender, FileUploadCompleteEventArgs e)

我要做的是将其他参数传递给我的AttachmentUploadedCompleteEvent()方法。所以我希望签名改为

public static void AttachmentUploadedCompleteEvent(object sender, FileUploadCompleteEventArgs e, bool isAdmin)

但是当然如果我改变上面的话就会出错:

  

无法从'方法组'转换为'输出字符串[]'

我对Delegates的了解不是最好的,所以我希望有人能指出我如何实现这个目标的正确方向。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

需要提供与signature of the delegate兼容的方法。这意味着,GetUploadedFiles的第3个参数必须是以objectFileUploadCompleteEventArgs作为参数的方法,并返回void。

你可以传递一个lambda来“咖喱”你的功能:

GetUploadedFiles(name, validationSettings, (s, e)=> { AttachmentUploadedCompleteEvent(s, e, isAdmin); }

lambda表达式是匿名方法,它匹配所需委托的签名,但您可以将另一个参数传递给原始方法。

答案 1 :(得分:0)

您需要更改委托声明,如

public delegate void AttachmentUploadedCompleteEventHandler(object sender,FileUploadCompleteEventArgs e,bool isAdmin)