有没有办法将Func <v1,v2,out1>强制转换为Func <out1>,因为我知道v1和v2?

时间:2018-01-10 16:01:33

标签: c# events lambda casting delegates

所以我有这个函数,它接受一个没有参数的函数:

public static bool RetryUntilSuccessOrTimeout(Func<bool> task, TimeSpan timeSpan)
    {
        bool success = false;
        int elapsed = 0;
        while ((!success) && (elapsed < timeSpan.TotalMilliseconds))
        {
            Thread.Sleep(1000);
            elapsed += 1000;
            success = task();
        }
        return success;
    }

然后我有很多功能,如:

private static bool OnDeleted(object source, FileSystemEventArgs e){...}
private static bool OnChanged(object source, FileSystemEventArgs e){...}
private static bool OnCreated(object source, FileSystemEventArgs e){...}

我有一个与三者相同的功能。所以我提供了这些信息。有没有办法将这些函数作为不带任何参数的函数传递(因为我提供它们)所以我可以将它传递给&#34;任务&#34; RetryUntilSuccessOrTimeout()?

问题的封装图片:

OnDirEvent

1 个答案:

答案 0 :(得分:2)

是。基本上你只是做

() => func(a, b)