Definittion的ProgressChanged
:將其他參數傳遞給事件Action;
// Summary:
// Event called whenever the progress of the upload changes.
public event Action<IUploadProgress> ProgressChanged;
public void insertFile(String filePath)
{
//.. some code
insertRequest.ProgressChanged += Upload_ProgressChanged;
}
public void Upload_ProgressChanged(Google.Apis.Upload.IUploadProgress progress)
{
//.. I need filePath from insertFile() here!
}
如何通過額外paramtres到Upload_ProgressChanged
?
我做了以下內容:
public void insertFile(String filePath)
{
//.. some code
ProgressChangedEventArgs args = new ProgressChangedEventArgs()
{
path = filePath
};
insertRequest.ProgressChanged += Upload_ProgressChanged;
}
static void Upload_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}
public class ProgressChangedEventArgs : EventArgs
{
public string path { get; set; }
}
而且我有Can not implicitly convert type 'void' to 'System.Action<Google.Apis.Upload.IUploadProgress>'
我會在這裏遵循事件模式... –
@AdrianoRepetti他已經是... – Servy
我會使用_standard_事件模式:您聲明'ProgressChangedEventArgs'?好,現在讓我們將事件從Action更改爲'EventHandler '。順便說一句,每次都不要(重新)註冊事件處理程序。基本上barrick在他的回答中說過(IMO它更正確,即使它隱含了一些重構)在'EventArgs'類中添加任何你需要的東西。捕獲一個變量也是可行的(絕對如果你不需要在課堂外暴露該事件,並且你不想在不同的類中分離代碼),但你必須理解它的含義。 –