2017-09-11 12 views
-1

誰かがこのコードをc#からvb.netに変換するのを手伝ってくれることを願っています。私はVBのアプリからC#のアプリに購読情報を公開するためにIISを使用しようとしています。私は、アプリケーションの一部のVBを使用する必要がありますが、他の部分のC#を使用する必要があります。私はこれが理想的ではないことを知っていますが、誰かを助けることができれば、私はそういう立場です。私はそれのほとんどを変換することができますが、私はほとんど手がかりを持っていない最初のビットで立ち往生した。 MSDNがVBサンプルコードを削除してC#コードのみを表示するので、それは可能ではありません。c#サービス参照の使用をvb.Netに変換する

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

するためにC#に変換することができますオンラインサービスがたくさんありますVBから、そしてVBからC#への方が簡単な理由は厳密な型付きです –

答えて

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 
+0

ありがとうございました。 – Cubiod

関連する問題