编组List<>时的预定义容量在WCF中

时间:2011-04-16 20:29:20

标签: c# .net wcf list marshalling

我正在使用WCF和'ref'参数编组List,我希望能够设置容量。

一些背景知识。我正在使用ref编组2个List,以便调用函数可以通过在调用之前初始化来确定它感兴趣的列表。

因此,对null的快速​​测试使服务能够对列表执行某些操作。一切正常。

但我想;我知道列表中会有100个项目,所以设置一个初始容量是一个好主意,但是当我在调用函数中这样做时,它会在WCF服务中重新设置为0。

任何线索?

非常感谢。

编辑:考虑一下 - 这确实有很大的意义。设置初始容量的任何分配资源都必须(浪费)编组,然后再水化/分配。

我认为第二个参数有一个大小或只是硬编码它是有序的。

1 个答案:

答案 0 :(得分:2)

WCF按值传递所有数据。它永远不会通过引用传递值。集合被转换为数组,因此除了包含的数据之外不会传输任何其他信息。标记为refout的参数仅定义转移参数的方向,并指示代理使用反序列化数据填充现有实例(如果是ref)。

如果要传输容量等信息,必须在单独的参数中传输,并在服务中使用它来限制返回数据的数量。