2013-03-07 3 views
6

में कनवर्ट करने में मदद की ज़रूरत है मैंने सी # को वीबी में परिवर्तित करने के लिए एक टूल का उपयोग किया था। जब मैं वीबी में प्रोग्राम चलाता हूं तो मुझे निम्न त्रुटि मिलती है:सी # से वीबी

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

मैं इस कोड को कैसे ठीक करूं?

सी #:

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

अगर मैं पूछ सकते हैं, _why_ आप इस कोड को परिवर्तित कर रहे हैं: एक वैकल्पिक हल प्रतिनिधि बजाय एक ByRef पैरामीटर का उपयोग करने को बदलने के लिए हो सकता है? सी # और वीबी.नेट एक साथ अच्छी तरह से _very_ खेलते हैं, आप .NET कक्षाओं को एक दूसरे से आयात कर सकते हैं आदि। –

+1

@ बेंजामिनग्रेनबाम "आप .NET कक्षाओं को मिश्रण कर सकते हैं" एक परियोजना में नहीं - इसे एक अलग असेंबली होना होगा। –

+0

मैंने पाया [यह पोस्ट] (http://www.vbforums.com/showthread.php?597718-Having-problem-converting-delegate-from-C-to-VB), उम्मीद है कि यह मदद करता है। –

उत्तर

6

के रूप में, वीबी घटनाओं है कि एक वापसी प्रकार के साथ एक प्रतिनिधि का उपयोग का समर्थन नहीं करता। तो आप कोड सीधे को परिवर्तित नहीं कर सकते हैं।

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