Ich mache eine Server-Bibliothek, in der die Paketverknüpfung durch enum erfolgt.Wie kann ich eine "abstrakte" Enumeration in einer .NET-Klassenbibliothek erstellen?
public enum ServerOperationCode : byte
{
LoginResponse = 0x00,
SelectionResponse = 0x01,
BlahBlahResponse = 0x02
}
public enum ClientOperationCode : byte
{
LoginRequest = 0x00,
SelectionRequest = 0x01,
BlahBlahRequest = 0x02
}
Das funktioniert gut, wenn Sie in Ihrem eigenen Projekt arbeiten - Sie, welche Aufzählungsmember zurückgegeben vergleichen kann (das heißt if (packet.OperationCode == ClientOperationCode.LoginRequest)
). Da es sich jedoch um eine Klassenbibliothek handelt, muss der Benutzer eine eigene Enumeration definieren.
Daher habe ich zwei enums als "abstrakte" hinzufügen - ServerOperationCode und ClientOperationCode. Ich weiß, dass es nicht möglich ist, abstrakte Enums in C# zu implementieren. Wie würde ich das machen?
ich kann nicht herausfinden, was Sie hier wollen. Sie möchten, dass Ihre Codes echte .NET-Typen sind, damit Ihr Client die Typprüfung erhält, aber nicht, dass der Client die Werte sieht? Was versuchen Sie zu tun, dass der Client, der eine Referenz zu Ihrer Bibliothek hinzufügt, nicht löst? –
Ich denke, ich versuche tatsächlich, eine Bibliothek zu erstellen, in der statische Objekte erweitert werden können, was unmöglich ist. Zum Beispiel eine Bibliothek, in der Sie "Server.Start" überschreiben oder implementieren können, aber das ist nicht ganz möglich. Ich könnte jedoch nach Ereignissen gehen. Ich werde sehen, was ich tun kann, danke für alle Antworten, ich werde es versuchen. – Lazlo