所以我有这种方案:
table Request {
a:Sample;
b:Sample;
}
表Sample有多个字符串向量,其实例非常大。 我的文件系统上有很多带有Sample实例的文件,这花了我一些时间来创建。 现在我想随机取两个文件,将它们读入内存并创建一个封装它们的新请求。
我正在使用c#,这条线有效:
var a = Sample.GetRootAsSample(new ByteBuffer(System.IO.File.ReadAllBytes(pathToA)));
var b = Sample.GetRootAsSample(new ByteBuffer(System.IO.File.ReadAllBytes(pathTob)));
但我似乎找不到在新的Request实例中引用它们的方法。 我需要一些方法将这些缓冲区添加到新构建器中,然后将它们的Offset传递给同一构建器中的新Request。 在一个新的建设者中重新建立它们并不会有效。
我怎样才能做到这一点?
答案 0 :(得分:1)
目前无法在C#中自动深层复制表格。由于表可能引用缓冲区中的各种位置,因此这不是一个简单的操作,需要特殊用途的代码生成或反射。
使用反射在C ++中有CopyTable
。这可以移植到C#或从C#调用。
另一种方法是以二进制形式在新表中包含现有缓冲区,即make a
和b
ubytes向量。这意味着你必须在它们上面调用GetRootAs
来访问它们,但这仍然非常有效。