I have created a web service via WCF. Then I exposed it as a web service to make it usable with a .NET 2.0 application. I created some DataContract with DataMember that coul
Also you can use [DataMember(isRequired=True)]
You could read the explanation here.
Quote from XmlSerializer:
If a schema includes an element that is optional (minOccurs = '0'), or if the schema includes a default value, you have two options. One option is to use System.ComponentModel.DefaultValueAttribute to specify the default value, as shown in the following code. Another option is to use a special pattern to create a Boolean field recognized by the XmlSerializer, and to apply the XmlIgnoreAttribute to the field. The pattern is created in the form of propertyNameSpecified. For example, if there is a field named "MyFirstName" you would also create a field named "MyFirstNameSpecified" that instructs the XmlSerializer whether to generate the XML element named "MyFirstName".
The only acceptable for me workaround I've come so far is to use XmlSerializer instead of DataContractSerializer by using XmlSerializerFormatAttribute.
The default parameters for the DataMember attribute are:
bool EmitDefaultValue (default true)
bool IsRequired (default false)
If the property you are exposing is a non-nullable value type you should use:
[DataMember(IsRequired = true)]
public int InvoiceNo;