我希望有人可以帮助我将此代码从c#转换为vb.net。我正在尝试使用IIS将VB应用程序中的订阅信息发布到c#app。我需要将VB用于应用程序的一部分,但需要将c#用于其他部分。我知道这不是理想的,但这是我所处的位置所以如果有人可以提供帮助,那就太棒了。我可以转换它的大部分,但坚持第一位,我几乎没有任何线索。甚至不确定MSDN是否已删除VB示例代码并仅显示c#代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
namespace SeagateServiceClient
{
public class Client : PubSubService.ISampleContractCallback
{
private PubSubService.SampleContractClient client;
public void Subscribe()
{
try
{
InstanceContext site = new InstanceContext(null, new Client());
client = new PubSubService.SampleContractClient(site);
//create a unique callback address so multiple clients can run on one machine
WSDualHttpBinding binding = (WSDualHttpBinding)client.Endpoint.Binding;
string clientcallbackaddress = binding.ClientBaseAddress.AbsoluteUri;
//string clientcallbackaddress = "http://localhost:9000/myClient/";
clientcallbackaddress += Guid.NewGuid().ToString();
binding.ClientBaseAddress = new Uri(clientcallbackaddress);
client.ClientCredentials.Windows.ClientCredential.UserName = @"temp";
client.ClientCredentials.Windows.ClientCredential.Domain = "NN";
client.ClientCredentials.Windows.ClientCredential.Password = "temp";
//Subscribe.
Console.WriteLine("Subscribing");
client.Subscribe();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
public void UnSubscribe()
{
if(client != null)
{
try
{
Console.WriteLine("Unsubscribing");
client.Unsubscribe();
client.Close();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
finally
{
if (client != null && (client.State.ToString() != "Closed" && client.State.ToString() != "Faulted"))
client.Close();
}
}
}
public void PushPriceChange(string item, double price, double change)
{
try
{
Console.WriteLine("PriceChangePushed(item {0}, price {1}, change {2})", item, price.ToString("C"), change);
client.PublishPriceChange("test", 22, 234);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
public void PriceChange(string item, double price, double change)
{
Console.WriteLine("PriceChange(item {0}, price {1}, change {2})", item, price.ToString("C"), change);
}
}
}
VB.net尝试:
Imports System.Linq
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Public Module PublishData
Public Sub Test()
System.Diagnostics.Debug.WriteLine("This is a test")
End Sub
Public client As PubSubService.SampleContractClient
Public Sub Subscribe()
Try
InstanceContext site = New InstanceContext(null, New Client())
client = New PubSubService.SampleContractClient(site)
'create a unique callback address so multiple clients can run on one machine
WSDualHttpBinding binding = (WSDualHttpBinding)client.Endpoint.Binding
String clientcallbackaddress = binding.ClientBaseAddress.AbsoluteUri
'string clientcallbackaddress = "http://localhost:9000/myClient/"
clientcallbackaddress += Guid.NewGuid().ToString()
binding.ClientBaseAddress = New Uri(clientcallbackaddress
client.ClientCredentials.Windows.ClientCredential.UserName = @"temp"
client.ClientCredentials.Windows.ClientCredential.Domain = "NN"
client.ClientCredentials.Windows.ClientCredential.Password = "temp"
'Subscribe.
Console.WriteLine("Subscribing")
client.Subscribe()
Catch ex As Exception
Console.WriteLine(ex.Message)
Console.WriteLine(ex.StackTrace)
End Try
End Sub
Public Sub UnSubscribe()
If (Not String.IsNullOrEmpty(client)) Then
Try
System.Diagnostics.Debug.WriteLine("Unsubscribing")
client.Unsubscribe()
client.Close()
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
System.Diagnostics.Debug.WriteLine(ex.StackTrace)
Finally
If ((Not String.IsNullOrEmpty(client)) And (client.State.ToString() IsNot "Closed" And client.State.ToString() IsNot "Faulted")) Then
client.Close()
End If
End Try
End If
End Sub
Public Sub PushPriceChange(item As String, price As Double, change As Double)
Try
Console.WriteLine("PriceChangePushed(item {0}, price {1}, change {2})", item, price.ToString("C"), change)
client.PublishPriceChange("test", 22, 234)
Catch ex As Exception
Console.WriteLine(ex.Message)
Console.WriteLine(ex.StackTrace)
End Try
End Sub
Public Sub PriceChange(item As String, price As Double, change As Double)
Console.WriteLine("PriceChange(item {0}, price {1}, change {2})", item, price.ToString("C"), change);
End Sub
End Module
答案 0 :(得分:0)
离开我的头顶(显然没有经过测试)
Imports System.Collections.Generic
Imports System.Linq
Imports System.ServiceModel
Imports System.Text
Imports System.Threading.Tasks
Namespace SeagateServiceClient
Public Class Client Implements PubSubService.ISampleContractCallback
Private client As PubSubService.SampleContractClient
Public Sub Subscribe()
Try
Dim site As New InstanceContext(Nothing, New Client())
client = New PubSubService.SampleContractClient(site)
Dim binding As WSDualHttpBinding = DirectCast(client.Endpoint.Binding, WSDualHttpBinding)
Dim clientcallbackaddress As String = binding.ClientBaseAddress.AbsoluteUri
clientcallbackaddress += Guid.NewGuid().ToString()
binding.ClientBaseAddress = New Uri(clientcallbackaddress)
client.ClientCredentials.Windows.ClientCredential.UserName = "temp"
client.ClientCredentials.Windows.ClientCredential.Domain = "NN"
client.ClientCredentials.Windows.ClientCredential.Password = "temp"
Console.WriteLine("Subscribing")
client.Subscribe()
Catch e As Exception
Console.WriteLine(e.Message)
Console.WriteLine(e.StackTrace)
End Try
End Sub
Public Sub UnSubscribe()
If client IsNot Nothing Then
Try
Console.WriteLine("Unsubscribing")
client.Unsubscribe()
client.Close()
Catch e As Exception
Console.WriteLine(e.Message)
Console.WriteLine(e.StackTrace)
Finally
If client IsNot Nothing AndAlso (client.State.ToString() <> "Closed" AndAlso client.State.ToString() <> "Faulted") Then
client.Close()
End If
End Try
End If
End Sub
Public Sub PushPriceChange(item As String, price As Double, change As Double)
Try
Console.WriteLine("PriceChangePushed(item {0}, price {1}, change {2})", item, price.ToString("C"), change)
client.PublishPriceChange("test", 22, 234)
Catch e As Exception
Console.WriteLine(e.Message)
Console.WriteLine(e.StackTrace)
End Try
End Sub
Public Sub PriceChange(item As String, price As Double, change As Double)
Console.WriteLine("PriceChange(item {0}, price {1}, change {2})", item, price.ToString("C"), change)
End Sub
End Class
End Namespace