首页 文章

WCF服务中的属性,具有在客户端使用的一些初始值

提问于
浏览
0

我在WCF服务类中有一个具有初始值的属性,如下所示

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

然而,当我在客户端打电话时,它总是返回'0'而不是'50' .

我该如何解决这个问题?

我试过[DataMember(EmitDefaultValue = false)]但没有工作...... :(

谢谢,

日剧

2 回答

  • 4

    您是否在服务器上使用与客户端相同的DataContracts程序集?如果您正在生成自己的 Contract 以便在客户端中使用,则它将不知道此初始化,因为这是一种无法通过网络转换的行为 .

    当您为类型选择“非自然”默认值(即50而不是整数的0)时,必须将DefaultValueAttribute应用于数据成员,以便DataContractSerializer认识到该值是默认值而不是发出它 .

  • 1

    我遇到了同样的问题;在做了很多尝试之后,我最终发现问题在于 DataType .

    我有一个数据类型 Int32 根据数据库,并使用的属性类型 String ,它不会给出任何编译或执行问题,因为 int 默认可以序列化为 string .

    但我每次都看到空值,我将属性类型更改为 Int32 ,它就像一个魅力 . 试一试,确认您的数据类型,因为它们在编译器上显示正确的数据,直到第一次服务调用,但是一旦您跨越服务,您将看到空数据 .

    因此,如果我在一行中告诉解决方案,那么数据类型是不一样的;它可能会返回空值 .

相关问题