2013-03-07 14 views
6

私はC#をVBに変換するツールを使用しました。 VBでプログラムを実行すると、次のエラーが表示されます。C#をVBに変換するのに助けが必要

Events cannot be declared with a delegate type that has a return type.

このコードを修正するにはどうすればよいですか?

のC#:

using System; 
[assembly: CLSCompliant(true)] 

namespace Link.API 
{ 
    public delegate decimal DecimalStringDelegate(string s); 
    public delegate long OrderDelegateStatus(Order o); 
    public delegate void LongDelegate(long val); 
} 

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace Link.API 
{ 
    public interface TLServer 
    { 
    event LongDelegate newOrderCancelRequest; 
    event OrderDelegateStatus newSendOrderRequest; 
    string ClientName(int clientnum); 
    bool SymbolSubscribed(string sym); 

    Basket AllClientBasket { get; } 
    } 
} 

VB.NET:エラーがを暗示

Imports System.Text 
Imports System.Collections.Generic 
Imports System 
<Assembly: CLSCompliant(True)> 

Namespace Link.API 
    Public Delegate Function DecimalStringDelegate(ByVal s As String) As Decimal 
    Public Delegate Function OrderDelegateStatus(ByVal o As Order) As Long 
    Public Delegate Sub LongDelegate(ByVal val As Long) 
End Namespace 

Namespace Link.API 
    Public Interface Server 
    Event newOrderCancelRequest As LongDelegate 
    Event newSendOrderRequest As OrderDelegateStatus 
    Function ClientName(ByVal clientnum As Integer) As String 
    Function SymbolSubscribed(ByVal sym As String) As Boolean 
    ReadOnly Property AllClientBasket() As Basket 
    End Interface 
End Namespace 
+1

このコードを変換していますか? C#とVB.NETはよく一緒にプレイし、.NETクラスを混在させたり、別のものをインポートしたりすることができます。 –

+1

@BenjaminGruenbaum ".NETクラスを混在させることができます"というのは、別のアセンブリでなければなりません。 –

+0

[this post](http://www.vbforums.com/showthread.php?597718-Having-problem-converting-delegate-from-C-to-VB)が見つかりました。 –

答えて

6

として、VBは、戻り値の型とデリゲートを使用して、イベントをサポートしていません。したがって、コードを直接に変換することはできません。 1つの回避策は代理人がByRefパラメータを代わりに使用するように変更することです。

Public Delegate Sub DecimalStringDelegate(ByVal s As String, ByRef retVal as Decimal) 
Public Delegate Sub OrderDelegateStatus(ByVal o As Order, ByRef retVal As Long) 
+0

入力いただきありがとうございます – user1905155

関連する問題