我想知道为什么每当我不打算给出datable的名称时它会抛出一个错误。我们知道有一些datable类的构造函数被重载。所以如果我使用参数较少的构造函数是通过序列化给出错误。< BR />
有人可以解释为什么要使用参数化但不是默认的DataTable。
答案 0 :(得分:4)
这是因为数据表需要名称才能正确序列化。
这是为什么?好吧,确切的原因似乎是序列化过程使用表名作为键,具体而言,创建一个空数据集将其重新导入。当名称不存在时,查找表名的部分会引发异常,这就是您看到错误的原因。
您不必使用构造函数,但可以在外面设置TableName:
DataTable myTable = new DataTable();
myTable.TableName = "PleaseDontKillMySerialization";
如果您有兴趣,可以使用ILSpy查看课程内容。通过这种方式,您可以自己查看类的创建方式,并查看序列化对此类的工作原理。
正如Marc所提到的,使用DataTable仅限于.Net客户端。它在序列化时也是一个非常大的对象,因此每个请求都需要传输更多数据。