2009-10-27 73 views
0

我在WCF服务类中的属性与初始值,如下图所示属性,在客户端使用一些初始值WCF服务

private int mFieldLength_Name = 50; 
    [DataMember] 
    public int FieldLength_Name 
    { 
     get { return mFieldLength_Name; } 
     private set { mFieldLength_Name = value; } 
    } 

但是当我做在客户端随时调用,它返回'0'而不是'50'。

我该如何解决这个问题?

我试图[数据成员(EmitDefaultValue = FALSE)] 但不工作... :(

谢谢

日剧

回答

1

是否使用在DataContracts同样装配客户端,因为你在服务器上?如果你生成自己的合同用于客户端,它将不知道这种初始化,因为这是一种行为,不能通过网络来翻译。

W如果您选择某种类型的“非自然”默认值(即50而不是0代表整数),您必须将DefaultValueAttribute应用于数据成员,以便DataContractSerializer认识到该值是默认值并且不会发出该值。

+0

德鲁嗨, 对不起,这样沿延迟回复...... 我在那些财产还是没能得到“50”为默认值试图DefaultValueAttribute。 – Riju 2009-12-08 07:09:09

+0

您还需要确保在数据合同类本身中实际初始化您的属性(或后台字段)为50。这是因为WCF永远不会设置属性,因为XML中没有元素甚至无法解析,.NET显然会将其初始化为0。 – 2009-12-08 15:43:19

4

我面临同样的问题;在做了很多次尝试后,我终于发现问题在于DataType

我有一个数据类型Int32为每个数据库,并使用了具有类型String,它并没有给任何编译或执行问题作为int可以在默认情况下被序列化到string性能。

但是我每次都看到空的价值,我将房产类型更改为Int32,它的功能就像一个魅力。给它一个镜头,确认你的数据类型,因为它们在编译器上显示正确的数据,直到第一次服务调用,但只要你通过服务,你会看到空的数据。

因此,如果我在一行中告诉解决方案,如果数据类型不相同;它可能会返回空值。

相关问题