使用C#中的BinaryReader.read读取Unity的结构

时间:2018-01-02 19:08:12

标签: c# unity3d

我将旧版C#代码转换为Unity 2017,而且我坚持使用将二进制数据读取到大型结构的方法。

我定义了以下结构:

[StructLayout(LayoutKind.Sequential)]
struct Header
{
    public readonly int Magic;
    public readonly int Version;
    public readonly int FieldA;
    public readonly int FieldB;
    // ...
}

以及我遗留的C#应用​​程序中的以下代码:

using (var strm = new FileStream(mFileName, FileMode.Open))
    {
    var reader = new BinaryReader(strm);
    mHeader = reader.Read<Header>(); // <-- error here
    }

错误消息为:The non-generic method 'BinaryReader.Read()' cannot be used with typed arguments

我想一个解决方法可能是使用一堆reader.Read()调用,但标题结构相当大,我想找到一种方法来使用看起来像是一个好的快捷方式并保持代码更简单,更小。

1 个答案:

答案 0 :(得分:1)

Read()方法是自定义代码。它从未成为框架的一部分。它可能是一种扩展方法,如果是这样,只需复制即可。

你可以点击“阅读”上的某个地方找到它,然后点击F12或右键点击它并转到实施