Skip to main content
 首页 » 编程设计

c#之为什么需要在 webServices 中给出 dataTable 名称

2024年02月23日30zhwl

我想知道为什么每当我不打算给出数据名称时它就会抛出错误。正如我们所知,数据类的构造函数被重载了。因此,如果我使用无参数构造函数,则会根据序列化给出错误。< br/>


有人能解释一下为什么要使用参数化的数据表而不是默认的 DataTable 吗。

请您参考如下方法:

因为数据表需要名称才能正确序列化。

这是为什么?好吧,确切的原因似乎是序列化过程使用表名作为键,具体来说,创建了一个空数据集以将其重新导入。当名称不存在时,查找表名的部分会抛出异常,这就是您看到错误的原因。

不过,您不必使用构造函数,您可以在外部设置 TableName:

DataTable myTable = new DataTable(); 
myTable.TableName = "PleaseDontKillMySerialization"; 

有兴趣的可以使用ILSpy查看类(class)内容.通过这种方式,您可以亲眼看到该类是如何创建的,并了解该类的序列化是如何工作的。

不过,正如 Marc 所提到的,使用 DataTable 会限制您只能使用 .Net 客户端。它在序列化时也是一个相当大的对象,因此每个请求必须传输更多数据。