本文整理汇总了C#中Newtonsoft.Json.Serialization.JsonObjectContract.ExtensionDataGetter方法的典型用法代码示例。如果您正苦于以下问题:C# JsonObjectContract.ExtensionDataGetter方法的具体用法?C# JsonObjectContract.ExtensionDataGetter怎么用?C# JsonObjectContract.ExtensionDataGetter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Newtonsoft.Json.Serialization.JsonObjectContract
的用法示例。
在下文中一共展示了JsonObjectContract.ExtensionDataGetter方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SerializeObject
private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
{
OnSerializing(writer, contract, value);
_serializeStack.Add(value);
WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty);
int initialDepth = writer.Top;
for (int index = 0; index < contract.Properties.Count; index++)
{
JsonProperty property = contract.Properties[index];
try
{
object memberValue;
JsonContract memberContract;
if (!CalculatePropertyValues(writer, value, contract, member, property, out memberContract, out memberValue))
continue;
property.WritePropertyName(writer);
SerializeValue(writer, memberValue, memberContract, property, contract, member);
}
catch (Exception ex)
{
if (IsErrorHandled(value, contract, property.PropertyName, null, writer.ContainerPath, ex))
HandleError(writer, initialDepth);
else
throw;
}
}
if (contract.MemberWriter != null)
{
contract.MemberWriter(writer, value, GetInternalSerializer());
}
if (contract.ExtensionDataGetter != null)
{
IEnumerable<KeyValuePair<object, object>> extensionData = contract.ExtensionDataGetter(value);
if (extensionData != null)
{
foreach (KeyValuePair<object, object> e in extensionData)
{
JsonContract keyContract = GetContractSafe(e.Key);
JsonContract valueContract = GetContractSafe(e.Value);
bool escape;
string propertyName = GetPropertyName(writer, e.Key, keyContract, out escape);
if (ShouldWriteReference(e.Value, null, valueContract, contract, member))
{
writer.WritePropertyName(propertyName);
WriteReference(writer, e.Value);
}
else
{
if (!CheckForCircularReference(writer, e.Value, null, valueContract, contract, member))
continue;
writer.WritePropertyName(propertyName);
SerializeValue(writer, e.Value, valueContract, null, contract, member);
}
}
}
}
writer.WriteEndObject();
_serializeStack.RemoveAt(_serializeStack.Count - 1);
OnSerialized(writer, contract, value);
}
示例2: SerializeObject
// Token: 0x06000BFA RID: 3066
// RVA: 0x00046DF4 File Offset: 0x00044FF4
private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
{
this.OnSerializing(writer, contract, value);
this._serializeStack.Add(value);
this.WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty);
int top = writer.Top;
for (int i = 0; i < contract.Properties.Count; i++)
{
JsonProperty jsonProperty = contract.Properties[i];
try
{
JsonContract valueContract;
object value2;
if (this.CalculatePropertyValues(writer, value, contract, member, jsonProperty, out valueContract, out value2))
{
jsonProperty.WritePropertyName(writer);
this.SerializeValue(writer, value2, valueContract, jsonProperty, contract, member);
}
}
catch (Exception ex)
{
if (!base.IsErrorHandled(value, contract, jsonProperty.PropertyName, null, writer.ContainerPath, ex))
{
throw;
}
this.HandleError(writer, top);
}
}
if (contract.ExtensionDataGetter != null)
{
IEnumerable<KeyValuePair<object, object>> enumerable = contract.ExtensionDataGetter(value);
if (enumerable != null)
{
foreach (KeyValuePair<object, object> current in enumerable)
{
JsonContract contractSafe = this.GetContractSafe(current.Key);
JsonContract contractSafe2 = this.GetContractSafe(current.Value);
bool flag;
string propertyName = this.GetPropertyName(writer, current.Key, contractSafe, out flag);
if (this.ShouldWriteReference(current.Value, null, contractSafe2, contract, member))
{
writer.WritePropertyName(propertyName);
this.WriteReference(writer, current.Value);
}
else if (this.CheckForCircularReference(writer, current.Value, null, contractSafe2, contract, member))
{
writer.WritePropertyName(propertyName);
this.SerializeValue(writer, current.Value, contractSafe2, null, contract, member);
}
}
}
}
writer.WriteEndObject();
this._serializeStack.RemoveAt(this._serializeStack.Count - 1);
this.OnSerialized(writer, contract, value);
}