c# nach Vb.net migration

nfgndndndn

Grünschnabel
Hi @all,

ich habe folgendes Prolem beim Konvertieren meines c# Projektes nach vb, die Sache bringt mich ans verzweifeln, da in c# einfach.
Hier der code:

public class Foo
{

public event System.EventHandler ObjectsChanged;
private event System.EventHandler TempEvent;

private void Load(String filename)
{
//...code
TempEvent = (EventHandler) ObjectsChanged.Clone();
ObjectsChanged = new EventHandler(FakeHandler);
//...code
ObjectsChanged = (EventHandler)TempEvent.Clone();
ObjectsChanged(this, new EventArgs());
}
private void FakeHandler(object sender, EventArgs e)
{
}

private void Ok(object sender, CancelEventArgs e)
{
EventHandler tempevent = new EventHandler(obj.do);
tempevent += new EventHandler(RedrawHandler);
//...code
}

void RedrawHandler(object sender, EventArgs e)
{
dosomething;
}
}

Wie sähe das in vb aus? Dachte da an delegates?
 
Zuletzt bearbeitet:
Was mich persönlich interessiert: Warum von C# nach VB.NET migrieren?

Und hier die Lösung: Verwende den Reflector von Lutz Roeder. Öffne die Assembly in welcher der Source steckt und lass dir den Sourcecode anzeigen ... in VB.NET. Damit ist die Geschichte dann für dich erledigt ;-)

Sonst gibt es auch noch Migrationstools die dabei helfen ...
 
Das ist schon passiert, jedoch liefert das konvertierungs tool von sharpdevelop(sehr zu empfehlen)
ein wesentlich besseres und genaueres Ergebnis ;)
...und alle Anderen online tools versagen an den event stellen.
Sonst ist das gesamte Projekt konvertiert, bis auf diese Stellen eben, welche sehr wichtig sind :(
Warum nach vb? Nun ein anderes projekt(mdi) soll das Grundframework liefern,
sprich das aktuelle projekt soll integriert werden, ich weiss daß es auch mit c# geht,
will aber keinen Sprachen mix und Zweitens vb üben, da ich das Gefühl habe, daß ich in vb produktiver/ schneller bin.
 
Zuletzt bearbeitet:
Für alle die es interessiert, hier die Lösung des Rätsels:

Public Class Foo
Public Event ObjectsChanged As System.EventHandler
Private Event TempEvent As System.EventHandler

Private Sub Load(ByVal filename As String)
TempEventEvent = CType(ObjectsChangedEvent.Clone(), EventHandler)
ObjectsChangedEvent = New EventHandler(AddressOf FakeHandler)

ObjectsChangedEvent = CType(TempEventEvent.Clone(), EventHandler)
RaiseEvent ObjectsChanged(Me, New EventArgs())
End Sub
Private Sub FakeHandler(ByVal sender As Object, ByVal e As EventArgs)
End Sub

Private Sub Ok(ByVal sender As Object, ByVal e As CancelEventArgs)
TempEventEvent = New EventHandler(AddressOf obj.do)
AddHandler TempEvent, AddressOf RedrawHandler
End Sub

Private Sub RedrawHandler(ByVal sender As Object, ByVal e As EventArgs)
dosomething
End Sub
End Class


Man achte auf "ObjectsChangedEvent" und "TempEventEvent " Stellen ;)
 
Zuletzt bearbeitet:
Zurück