【发布时间】:2010-12-06 20:41:43
【问题描述】:
我正在存储不同格式和长度的数据。我有一个类层次结构来表示这一点:
abstract class BaseDataFormat{
abstract void InitalizeFromBytes(byte [] );
}
class DataFormat1 : BaseDataFormat{...} // data stored in 3 bytes
class DataFormat2 : BaseDataFormat{...} /// data stored in 4 bytes
当我读取数据时(比如从字节 []),我需要知道长度(字节数)以适当地读取和创建相应的类型。 DataFormat1 和 DataFormat2 的长度不同,那么如何在运行时获取这些信息呢?即。
Fcn<DATAFORMATTYPE>(...)
where DATAFORMATTYPE: BaseDataFormat, new();
{
DATAFORMATTYPE tmp = new DATAFORMATTYPE();
tmp.InitalizeFromBytes(ReadFromByteBuffer( ... someLength));
}
如何根据 DATAFORMATTYPE 对要读取的正确字节数进行编码?每个的长度感觉应该是数据格式类型的静态属性,但是静态属性不能被派生类覆盖,所以我不知道该怎么做。
长度可以编码为实例属性,但这似乎应该是在类级别(即静态)编码的知识。有没有设计模式可以解决这个问题?
谢谢
【问题讨论】:
标签: c# design-patterns inheritance static