我将C#语句转换为VB时遇到了困难。我不知道这是否是一个lambda,我确实使用但是我不是那个专家,或者是一个分隔符,我更了解它。根据微软的说法,C#'=>' symbol可以用于这两种不同的方式。
我遇到问题的C#代码行是:
RecurringJob.AddOrUpdate(() => TextBuffer.WriteLine("text"), Cron.Minutely);
它来自sample hangfire.mvcApplication project中的Startup.cs文件。这是完整的课程:
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configuration.UseSqlServerStorage("DefaultConnection");
app.UseHangfireDashboard();
app.UseHangfireServer();
RecurringJob.AddOrUpdate(
() => TextBuffer.WriteLine("Recurring Job completed successfully!"),
Cron.Minutely);
}
the TextBuffer.WriteLine reference is:
public static void WriteLine(string value)
{
lock (Buffer)
{
Buffer.AppendLine(String.Format("{0} {1}", DateTime.Now, value));
}
}
这是我试过的,这不是很准确;我尝试了很多变化:
RecurringJob.AddOrUpdate(Function() TextBuffer.WriteLine("text"), Cron.Minutely)
我在Visual Studio中得到的语法错误是:
Expression does not produce a value
我去了AddOrUpdate的定义,并看到了以下重载,但我不确定哪个是正确的选择使用,也不确定一旦我选择正确的重载语法将如何看起来。
Public Shared Sub AddOrUpdate(methodCall As Expression(Of Action), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(methodCall As Expression(Of Action), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(methodCall As Expression(Of Func(Of Task)), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(methodCall As Expression(Of Func(Of Task)), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(recurringJobId As String, methodCall As Expression(Of Action), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(recurringJobId As String, methodCall As Expression(Of Action), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(recurringJobId As String, methodCall As Expression(Of Func(Of Task)), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(recurringJobId As String, methodCall As Expression(Of Func(Of Task)), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(methodCall As Expression(Of Action(Of T)), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(methodCall As Expression(Of Action(Of T)), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(methodCall As Expression(Of Func(Of T, Task)), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(methodCall As Expression(Of Func(Of T, Task)), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(recurringJobId As String, methodCall As Expression(Of Action(Of T)), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(recurringJobId As String, methodCall As Expression(Of Action(Of T)), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(recurringJobId As String, methodCall As Expression(Of Func(Of T, Task)), cronExpression As Func(Of String), Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
Public Shared Sub AddOrUpdate(Of T)(recurringJobId As String, methodCall As Expression(Of Func(Of T, Task)), cronExpression As String, Optional timeZone As TimeZoneInfo = Nothing, Optional queue As String = "default")
我只是不明白该方法正在寻找什么或如何正确地编写它。
VB.NET有two different lambda expressions:Function
,它返回一个值,Sub
,它没有。
在这种情况下,您希望使用Sub
,因为您的表达式不返回值。
RecurringJob.AddOrUpdate(Sub() TextBuffer.WriteLine("text"), Cron.Minutely)