C# nach VB.NET bei Remoting

08/01/2008 - 20:07 von Christian Engelhardt | Report spam
Hallo,

also ich hab jetzt nicht die Frage wie ich C# nach VB übersetzen kann, da
hab ich in der Regel keine Probleme. Ich sitze aktuell darüber mich in
folgendes Projekt http://www.codeproject.com/KB/IP/Tw...oting.aspx
reinzuarbeiten und möchte diese Funktionalitàt gerne in meine Anwendung
übernehmen.

Meine Anwendung ist in VB.NET. Soweit bekomm ich das schon ganz gut hin nur
hànge ich hier an einer Zeile bzw. Klasse welche ein Event feuert und dazu
einen Delegaten als Eventargument übergibt. Nun sieht die klasse welche das
macht in C# so aus:


public class CallbackSink : MarshalByRefObject
{
public event delCommsInfo OnHostToClient;

public CallbackSink()
{ }

[OneWay]
public void HandleToClient(CommsInfo info)
{
if (OnHostToClient != null)
OnHostToClient(info);
}
}
-

Das Ereignis OnHostToClient feuert hierbei ein Objekt vom Typ CommsInfo.
Soweit kein Thema. Aber das Ereignis OnHostToClient ist so definiert:

public event delCommsInfo OnHostToClient;

delCommsinfo ist ein delegat bzw. übersetzt nach vb.net eine delegate sub.

Jetzt scheint das int C# zwar wunderbar zu funktionieren aber in VB.NET muss
ich ja irgendwie die invoke methode einbinden um von einem delegaten auf den
datentyp in dem fall von delCommsInfo auf Commsinfo schließen zu können.

Aber meine Übersetzung:



Public Class CallBackSink

Inherits MarshalByRefObject

Public Event OnHostToClient(ByVal oInfo As delCommsinfo )

Public Sub New()
End Sub

<OneWay()> _
Public Sub HandleToClient(ByVal oInfo As Commsinfo )


RaiseEvent OnHostToClient(oInfo)

End Sub

End Class


Will bei Raiseevent nicht klappen weil oInfo vom Typ Commsinfo ist und
nicht der delegate delCommsinfo.

Wie kann ich hier nun bei RaiseEvent analog zu der C# Vorlage das ganze
auscodieren?

Ist das soweit verstàndlich gewesen? Ich denke das Projekt an sich ist nicht
unbekannt.

Gruss,

Christian
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
08/01/2008 - 21:50 | Warnen spam
Hallo Christian!

"Christian Engelhardt"
schrieb:
public class CallbackSink : MarshalByRefObject
{
public event delCommsInfo OnHostToClient;

public CallbackSink()
{ }

[OneWay]
public void HandleToClient(CommsInfo info)
{
if (OnHostToClient != null)
OnHostToClient(info);
}
}
-

Das Ereignis OnHostToClient feuert hierbei ein Objekt vom Typ CommsInfo.
Soweit kein Thema. Aber das Ereignis OnHostToClient ist so definiert:

public event delCommsInfo OnHostToClient;

delCommsinfo ist ein delegat bzw. übersetzt nach vb.net eine delegate sub.

Jetzt scheint das int C# zwar wunderbar zu funktionieren aber in VB.NET
muss
ich ja irgendwie die invoke methode einbinden um von einem delegaten auf
den
datentyp in dem fall von delCommsInfo auf Commsinfo schließen zu können.

Aber meine Übersetzung:



Public Class CallBackSink

Inherits MarshalByRefObject

Public Event OnHostToClient(ByVal oInfo As delCommsinfo )



=>

'Public Event OnHostToClient As delCommsinfo'

'delCommsinfo' ist dabei eine 'Delegate Sub delCommsinfo(ByVal oInfo As
CommsInfo)', soweit ich Deinen Code verstehe. Dann sollte auch 'RaiseEvent
OnHostToCient(<CommsInfo-Objekt>)' funktionieren.

Public Sub New()
End Sub

<OneWay()> _
Public Sub HandleToClient(ByVal oInfo As Commsinfo )
RaiseEvent OnHostToClient(oInfo)
End Sub

End Class


Will bei Raiseevent nicht klappen weil oInfo vom Typ Commsinfo ist und
nicht der delegate delCommsinfo.



Siehe oben.

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen