2010-08-16 5 views
3
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); 
} 
} 

Je converti en:Pouvez-vous convertir cela en VB?

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 

Mais il me donne une erreur:

événement enregistrés partagés public() est un événement et ne peut pas être appelé directement. Utilisez une instruction "RaiseEvent" pour déclencher un événement.

+1

Vous n'appelez aucun événement dans ce code. Pouvez-vous poster le code où l'erreur se produit? – Guffa

+0

Je suis d'accord avec @ Guffa, le code que vous avez posté semble bien. – Walter

Répondre

4

utilisez cette

AddHandler Post.Saved, AddressOf Post_Saved 

au lieu de

Post.Saved += New EventHandler(Of SavedEventArgs)(AddressOf Post_Saved) 
+0

C'est cool merci – Barga

0

Il existe des outils disponibles pour fournir la conversion pour vous. Il existe un outil très connu qui permet l'inspection des assemblages (je ne le nommerai pas explicitement). Je pense que dans ce cas, quand un outil gratuit est disponible pour gagner du temps et de l'effort, il n'y a rien à faire - à moins de parler des spécificités de la gestion des différences de syntaxe - en faisant cela ici! J'espère que je n'offense personne avec ce point de vue.

3

D'après ce que je peux vous recueillir ont un événement appelé Save que vous essayez d'invoquer quelque part et vous êtes probablement faire quelque chose comme:

Save(myObject, mySavedEventArgs) 

ci-dessus est ok en C#, cependant, VB.NET vous devez utiliser le RaiseEvent statement:

RaiseEvent Save(myObject, mySavedEventArgs)