【发布时间】:2013-03-07 22:51:53
【问题描述】:
我使用了一个工具将 C# 转换为 VB。当我在 VB 中运行程序时,出现以下错误:
不能使用具有返回类型的委托类型来声明事件。
如何更正此代码?
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
【问题讨论】:
-
如果我可以问,为什么你要转换这段代码? C# 和 VB.NET 一起玩非常,你可以混合 .NET 类,相互导入等。
-
@BenjaminGruenbaum “你可以在一个项目中混合 .NET 类” - 它必须是一个单独的程序集。
-
我找到了this post,希望对您有所帮助。
-
最坏结果,你可以用 C# 编译它并使用反射器程序(dotPeek,dotNetReflector)将它反编译成 VB.NET。它可能不是最容易理解的代码,但它会起作用。
标签: c# vb.net c#-to-vb.net