C# EmitDefaultValue设置为false将在WCF和C中适用于int、long、float和DateTime#

C# EmitDefaultValue设置为false将在WCF和C中适用于int、long、float和DateTime#,c#,asp.net,wcf,C#,Asp.net,Wcf,EmitDefaultValue设置为false不适用于int和其他数据类型,请告知我。我想从xml中删除空值字段。它似乎只适用于字符串类型 这些是实现这一目标的其他更好的方法吗 请做必要的事 数据合同 [Serializable] [DataContract] public class AddressContract { private int addressTypeIdField = 0; private int parentAd

EmitDefaultValue设置为false不适用于int和其他数据类型,请告知我。我想从xml中删除空值字段。它似乎只适用于字符串类型

这些是实现这一目标的其他更好的方法吗

请做必要的事

数据合同

 [Serializable]
    [DataContract]
    public class AddressContract
    {

        private int addressTypeIdField = 0;

        private int parentAddressTypeIDField = 0;

        private string postCodeField = null;

        private string phoneFlagField = null;

        private string emailFlagField = null;

        private float geoCodeLattitudeField = 0.0F;

        private float geoCodeLongitudeField = 0.0F;

        [DataMember(EmitDefaultValue = false)]
        public int AddressTypeId
        {
            get
            {
                return this.addressTypeIdField;
            }
            set
            {
                this.addressTypeIdField = value;
            }
        }

        [DataMember(EmitDefaultValue = false)]
        public int ParentAddressTypeID
        {
            get
            {
                return this.parentAddressTypeIDField;
            }
            set
            {
                this.parentAddressTypeIDField = value;
            }
        }

        [DataMember(EmitDefaultValue = false)]
        public string PostCode
        {
            get
            {
                return this.postCodeField;
            }
            set
            {
                this.postCodeField = value;
            }
        }

        [DataMember(EmitDefaultValue = false)]
        public string PhoneFlag
        {
            get
            {
                return this.phoneFlagField;
            }
            set
            {
                this.phoneFlagField = value;
            }
        }

        [DataMember(EmitDefaultValue = false)]
        public string EmailFlag
        {
            get
            {
                return this.emailFlagField;
            }
            set
            {
                this.emailFlagField = value;
            }
        }

        [DataMember(EmitDefaultValue = false)]
        public float GeoCodeLattitude
        {
            get
            {
                return this.geoCodeLattitudeField;
            }
            set
            {
                this.geoCodeLattitudeField = value;
            }
        }

        [DataMember(EmitDefaultValue = false)]
        public float GeoCodeLongitude
        {
            get
            {
                return this.geoCodeLongitudeField;
            }
            set
            {
                this.geoCodeLongitudeField = value;
            }
        }
    }
根据这个链接


可以肯定它也可以与int-value一起工作

您可以发布您的数据契约吗?EmitDefaultValue应该是所有这些类型的正确方法。@Buh Buh-EmitDefaultValue除了字符串类型之外不工作您的契约看起来正确。您是如何生成/查看xml的?在误解了所有内容之后:)我必须进行测试,合同工作正常。