本文整理汇总了C#中ISerializationContext.AddRef方法的典型用法代码示例。如果您正苦于以下问题:C# ISerializationContext.AddRef方法的具体用法?C# ISerializationContext.AddRef怎么用?C# ISerializationContext.AddRef使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISerializationContext
的用法示例。
在下文中一共展示了ISerializationContext.AddRef方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SerialzeFields
public static void SerialzeFields(object obj, ISerializationContext info)
{
bool isState = info.IsProcessingState;
var fields = EnumerateSerializableFields(obj.GetType());
foreach (var f in fields)
{
var v = f.GetValue(obj);
var vType = v != null ? v.GetType() : f.FieldType;
if (isState)
{
if (info.IsState(vType)) { info.AddState(f.Name, v); }
}
else
{
if (!info.IsState(vType)) { info.AddRef(f.Name, v); }
}
}
}
示例2: SerialzeCompiledProperties
private void SerialzeCompiledProperties(ISerializationContext context)
{
var formatter = context.RefFormatter;
bool isState = context.IsProcessingState;
//只序列化 compiled property, 不序列化 runtime property
foreach (var field in this._compiledFields)
{
if (field.HasValue)
{
var p = field.Property;
//如果是需要的类型
if (context.IsState(p.PropertyType) == isState)
{
var v = field.Value;
var defaultValue = p.GetMeta(this).DefaultValue;
//如果不是默认值
if (!object.Equals(v, defaultValue))
{
if (isState)
{
context.AddState(p.Name, v);
}
else
{
context.AddRef(p.Name, v);
}
}
}
}
}
}