我想实现一个用C#编写的“框架”,用于Windows窗体应用程序。
此框架旨在实现一些允许通过TCP / IP套接字发送和接收字节数组的基本方法,并将这些字节数组转换为实现不同TCP / IP报文的特定类,这些报表由头数据和有效负载组成数据。
我想过使用接口,一些抽象基类,并基于它们为不同的协议实现不同的实现。
我已经设计了接口,但是在该接口中我没有静态成员或构造函数声明的限制。
这是我的界面:
public interface ITcpTelegramm<T> where T : struct
基于此,我宣布了
using IUInt16TcpTelegramm = ITcpTelegramm<UInt16>;
public abstract class TcpTelegramm : IUInt16TcpTelegramm
其中我将接口实现为抽象方法
public abstract IUInt16TcpTelegramm Analyse(byte[] daten);
因此,每个继承 TcpTelegramm 的类都必须声明这些方法的实现。
但是因为接口不能包含静态方法而静态方法不能是抽象的,所以我不能强制继承类将 Analyze 实现为静态:
public static IUInt16TcpTelegramm Analyse(byte[] daten)
{
/* some code that analyses the byte array and creates an object
that represents the TCP/IP telegram object in the array */
}
所以现在我被困了一点。 要么我放弃使用静态方法,要么使用抽象基类。