我想知道为什么每当我不打算给出数据名称时它就会抛出错误。正如我们所知,数据类的构造函数被重载了。因此,如果我使用无参数构造函数,则会根据序列化给出错误。< br/>
有人能解释一下为什么要使用参数化的数据表而不是默认的 DataTable 吗。
请您参考如下方法:
因为数据表需要名称才能正确序列化。
这是为什么?好吧,确切的原因似乎是序列化过程使用表名作为键,具体来说,创建了一个空数据集以将其重新导入。当名称不存在时,查找表名的部分会抛出异常,这就是您看到错误的原因。
不过,您不必使用构造函数,您可以在外部设置 TableName:
DataTable myTable = new DataTable();
myTable.TableName = "PleaseDontKillMySerialization";
有兴趣的可以使用ILSpy查看类(class)内容.通过这种方式,您可以亲眼看到该类是如何创建的,并了解该类的序列化是如何工作的。
不过,正如 Marc 所提到的,使用 DataTable 会限制您只能使用 .Net 客户端。它在序列化时也是一个相当大的对象,因此每个请求必须传输更多数据。
