C# 将附加参数传递给方法
我正在使用C# 将附加参数传递给方法,c#,asp.net-mvc,delegates,devexpress,C#,Asp.net Mvc,Delegates,Devexpress,我正在使用Devexpress文件上载控件。我在UploadControlExtension类中使用以下重载: public static UploadedFile[] GetUploadedFiles(string name, UploadControlValidationSettings validationSettings, EventHandler<FileUploadCompleteEventArgs> fileUploadCompleteDelegate); 我试图做的
Devexpress
文件上载控件。我在UploadControlExtension
类中使用以下重载
:
public static UploadedFile[] GetUploadedFiles(string name, UploadControlValidationSettings validationSettings, EventHandler<FileUploadCompleteEventArgs> fileUploadCompleteDelegate);
我试图做的是向我的AttachmentUploadedCompleteEvent()
方法传递额外的参数。所以我想把签名改成
public static void AttachmentUploadedCompleteEvent(object sender, FileUploadCompleteEventArgs e, bool isAdmin)
当然,如果我改为上面的话,我会得到一个错误:
无法从“方法组”转换为“输出字符串[]”
我在代理方面的知识不是最好的,所以我希望有人能为我指明正确的方向来实现这一点
提前感谢你的帮助 需要提供一种与标准兼容的方法。这意味着,GetUploadedFiles
的第三个参数必须是一个方法,该方法将对象
和fileuploadecompleteeventargs
作为参数,并返回void
您可以将lambda传递给函数“curry”:
GetUploadedFiles(name, validationSettings, (s, e)=> { AttachmentUploadedCompleteEvent(s, e, isAdmin); }
lambda表达式是一个匿名方法,它匹配所需委托的签名,但是您可以将另一个参数传递给原始方法 您需要更改委托声明,如
public delegate void AttachmentUploadedCompleteetEventHandler(对象发送者、文件上载CompleteetEventTargets e、布尔isAdmin)谢谢!这正是我所需要的。你帮我节省了很多时间!很高兴你这么说。
GetUploadedFiles(name, validationSettings, (s, e)=> { AttachmentUploadedCompleteEvent(s, e, isAdmin); }