C# 如何存储协议/规范结构

C# 如何存储协议/规范结构,c#,.net,C#,.net,实现一个ISO创建者(主要是一个智力练习)我需要存储cd数据结构值 例如,从规范的第47页开始,为了以ISO9660格式存储目录,我需要存储有关各种字节字段的信息 还有其他表,例如存储字段的路径表,字段总数将以数百为单位 所以我也可以 1-将这些存储在.cs文件中,本质上是“硬编码” public byte length=1; public byte ExtendedAttributeLength = 0; //and so on 2-我可以将这些作为常量存储在.cs文件中 3-我可以将这些

实现一个ISO创建者(主要是一个智力练习)我需要存储cd数据结构值

例如,从规范的第47页开始,为了以ISO9660格式存储目录,我需要存储有关各种字节字段的信息

还有其他表,例如存储字段的路径表,字段总数将以数百为单位

所以我也可以

1-将这些存储在.cs文件中,本质上是“硬编码”

public byte length=1;
public byte ExtendedAttributeLength = 0;
//and so on
2-我可以将这些作为常量存储在.cs文件中

3-我可以将这些存储在XML文件中

4-我甚至可以将它们存储在数据库表中

考虑到这些值不太可能改变,但也不是不可能,我不确定应该以何种方式存储这些值


谢谢

我认为您可以将所有这些规范定义为具有显式布局的结构。通过这种方式,可以为每个字段指定偏移量:

[StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)]
public struct DirectoryRecord
{
   [FieldOffset(0)]
   byte RecordLength;

   [FieldOffset(1)]
   byte ExtendedAttrRecordLength;

   ...
}
然后,您可以将它们序列化为字节数组,并可能将它们保存为ISO映像头的一部分或它们在其中的任何位置


然而,如果你看看现有的一个C#ISO9660实现,比如你会发现它们做的事情有点不同

对于
DirectoryRecord
,他们使用
ReadFrom
WriteTo
方法定义了一个类,该类负责从输入流中的适当偏移量进行读取。这是一种选择。除此之外,它们还有一些其他组件读取文件,并将读取委托给子组件(如此组件)


所以,你可以像他们那样做。或者,您可以像我前面提到的那样使用结构,让它们只像POCO一样工作,而不是额外的读写逻辑。你必须在别的地方做那件事。

你打算用它做什么?在不知道如何使用它的情况下,不可能给出一个结论性的答案。我打算用它从CDS创建一个ISO。那么你打算如何使用这些变量呢?任何与之相关的代码?+1这是一种非常有趣的方法,我很感激您甚至查找了它。我在看用c编写的iSOcreater,它是通过将所有这些存储为普通字节来实现的。@iAteABug_和_-iLiked_:无论规范是否会更改,您都需要一种易于阅读和维护的方法。非结构化数据(如您所说的普通字节)不是其中之一。