Orcas introduced a new DateTimeOffset class that is easier to use for representing absolute times than the original DateTime class. However, if you run svcutil on a contract that contains a DateTimeOffset, you'll get an ugly generated structure because DateTimeOffset isn’t recognized as a natively supported type by the system. A new class is generated by svcutil to match the schema for DateTimeOffset in the metadata.
namespace System{ using System.Runtime.Serialization; [DebuggerStepThroughAttribute()] [GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")] [DataContractAttribute(Name="DateTimeOffset", Namespace="http://schemas.datacontract.org/2004/07/System")] public partial struct DateTimeOffset : IExtensibleDataObject { private ExtensionDataObject extensionDataField; private DateTime DateTimeField; private short OffsetMinutesField; public ExtensionDataObject ExtensionData { get { return this.extensionDataField; } set { this.extensionDataField = value; } } [DataMemberAttribute(IsRequired=true)] public DateTime DateTime { get { return this.DateTimeField; } set { this.DateTimeField = value; } } [DataMemberAttribute(IsRequired=true)] public short OffsetMinutes { get { return this.OffsetMinutesField; } set { this.OffsetMinutesField = value; } } }}
There's a new option on svcutil, /targetClientVersion:Version35, that can be used to indicate that code generation should use new features in Orcas.
As far as I know, there are three places where this option makes a difference.
Next time: Read Only Data Members