Ich fange an, C# zu lernen und kann nicht herausfinden, wie die Basisklassenmethode innerhalb der Interface-Methode aufgerufen wird. In diesem speziellen Fall muss ich irgendwie sendData
von innerhalb onRecieve
Methode anrufen.C# Calling-Base-Methode von der Schnittstellenmethode
WebSocketBase.cs
using WebSocketSharp;
using System;
using System.Collections.Generic;
using System.Threading;
class WebSocketBase
{
private WebSocket webSocketClient = null;
private WebSocketService webService = null;
private string url = null;
public WebSocketBase(string url, WebSocketService webService)
{
this.webService = webService;
this.url = url;
}
public void start()
{
webSocketClient = new WebSocket(url);
webSocketClient.OnError += new EventHandler<WebSocketSharp.ErrorEventArgs>(webSocketClient_Error);
webSocketClient.OnOpen += new EventHandler(webSocketClient_Opened);
webSocketClient.OnClose += new EventHandler<WebSocketSharp.CloseEventArgs>(webSocketClient_Closed);
webSocketClient.OnMessage += new EventHandler<MessageEventArgs>(webSocketClient_MessageReceived);
webSocketClient.ConnectAsync();
}
private void webSocketClient_MessageReceived(object sender, MessageEventArgs e)
{
webService.onReceive(e.Data);
}
public void send(string channel)
{
webSocketClient.Send(channel);
}
public void sendData(string data)
{
send("data");
}
}
interface WebSocketService
{
void onReceive(String msg);
}
Logic.cs
class Logic : WebSocketService
{
public void onReceive(string msg)
{
Console.WriteLine("Received message")
}
}
Es gibt keine Instanz von 'WebSocketBase' in diesem Code. Sie benötigen eine Instanz eines bestimmten Objekts, um eine Methode für dieses Objekt aufzurufen. – David
In Ihrem Beispiel implementiert die 'Logic' Klasse nur die Schnittstelle, nicht die' WebSocketBase'. Wie können Sie eine Basisklasse aufrufen, wenn Sie nicht von einer erben? – Louis
Hätten Sie etwas dagegen, ein vollständiges Beispiel zu geben? das scheint einen Teil des Codes zu vermissen (wie kommt das "webService" -Objekt, das du benutzt, her?) –