static RelatedPosts()
{
Post.Saved += new EventHandler<SavedEventArgs>(Post_Saved);
}
static void Post_Saved(object sender, SavedEventArgs e)
{
if (e.Action == SaveAction.Update)
{
Post post = (Post)sender;
if (_Cache.ContainsKey(post.Id))
_Cache.Remove(post.Id);
}
}
我转换为:
Shared Sub New()
Post.Saved += New EventHandler(Of SavedEventArgs)(AddressOf Post_Saved)
End Sub
Private Shared Sub Post_Saved(ByVal sender As Object, ByVal e As SavedEventArgs)
If e.Action = SaveAction.Update Then
Dim post As Post = DirectCast(sender, Post)
If _Cache.ContainsKey(post.Id) Then
_Cache.Remove(post.Id)
End If
End If
End Sub
但它给了我一个错误:
公共共享事件Saved()是一个事件,无法直接调用。使用'RaiseEvent'语句来引发事件。
答案 0 :(得分:4)
使用此
AddHandler Post.Saved, AddressOf Post_Saved
而不是
Post.Saved += New EventHandler(Of SavedEventArgs)(AddressOf Post_Saved)
答案 1 :(得分:3)
从我可以收集到的内容中,您有一个名为Save
的事件,您试图在某个地方调用它并且您可能正在执行以下操作:
Save(myObject, mySavedEventArgs)
以上在C#中没问题,但是在VB.NET中你需要使用RaiseEvent statement:
RaiseEvent Save(myObject, mySavedEventArgs)
答案 2 :(得分:0)
有一些工具可以为您提供转换。有一个众所周知的工具,允许检查组件(我不会明确地命名)。我认为在这种情况下,当一个免费工具可用于节省时间和精力时,除非 - 谈论事件处理语法差异的具体细节 - 在这里这样做是没有意义的!我希望我不要冒犯任何有这种观点的人。