public static Dictionary <string, object> ConvertClassDataContractToDictionary(DataContractJsonSerializer serializer, ClassDataContract dataContract, object value, XmlObjectSerializerWriteContextComplexJson context, bool writeServerType)
{
Dictionary <string, object> classToDictionary = new Dictionary <string, object>();
if (writeServerType)
{
AddTypeInformation(classToDictionary, DataContract.GetDataContract(value.GetType()));
}
if (dataContract.UnderlyingType == Globals.TypeOfDateTimeOffsetAdapter)
{
DateTimeOffset dto = (DateTimeOffset)value;
classToDictionary["DateTime"] = dto.UtcDateTime;
classToDictionary["OffsetMinutes"] = (short)dto.Offset.TotalMinutes;
return(classToDictionary);
}
else if (dataContract.IsKeyValuePairAdapter)
{
//Convert KeyValuePair<K,T> to KeyValuePairAdapter<K,T>
value = dataContract.KeyValuePairAdapterConstructorInfo.Invoke(new object[] { value });
}
DataContractJsonSerializer.InvokeOnSerializing(value, dataContract, context);
WriteClassDataContractMembers(serializer, dataContract, ref classToDictionary, value, context);
DataContractJsonSerializer.InvokeOnSerialized(value, dataContract, context);
return(classToDictionary);
}