private void ParseMember(ParseRecord pr)
{
ParseRecord parseRecord = (ParseRecord)this.stack.Peek();
if (parseRecord != null)
{
string str = parseRecord.PRname;
}
switch (pr.PRmemberTypeEnum)
{
case InternalMemberTypeE.Item:
this.ParseArrayMember(pr);
break;
default:
if (pr.PRdtType == null && parseRecord.PRobjectInfo.isTyped)
{
pr.PRdtType = parseRecord.PRobjectInfo.GetType(pr.PRname);
if (pr.PRdtType != null)
{
pr.PRdtTypeCode = Converter.ToCode(pr.PRdtType);
}
}
if (pr.PRmemberValueEnum == InternalMemberValueE.Null)
{
parseRecord.PRobjectInfo.AddValue(pr.PRname, (object)null, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
if (pr.PRmemberValueEnum == InternalMemberValueE.Nested)
{
this.ParseObject(pr);
this.stack.Push((object)pr);
if (pr.PRobjectInfo != null && pr.PRobjectInfo.objectType != null && pr.PRobjectInfo.objectType.IsValueType)
{
pr.PRisValueTypeFixup = true;
this.ValueFixupStack.Push((object)new ValueFixup(parseRecord.PRnewObj, pr.PRname, parseRecord.PRobjectInfo));
break;
}
parseRecord.PRobjectInfo.AddValue(pr.PRname, pr.PRnewObj, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
if (pr.PRmemberValueEnum == InternalMemberValueE.Reference)
{
object @object = this.m_objectManager.GetObject(pr.PRidRef);
if (@object == null)
{
parseRecord.PRobjectInfo.AddValue(pr.PRname, (object)null, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
parseRecord.PRobjectInfo.RecordFixup(parseRecord.PRobjectId, pr.PRname, pr.PRidRef);
break;
}
parseRecord.PRobjectInfo.AddValue(pr.PRname, @object, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
if (pr.PRmemberValueEnum == InternalMemberValueE.InlineValue)
{
if (pr.PRdtType == Converter.typeofString)
{
this.ParseString(pr, parseRecord);
parseRecord.PRobjectInfo.AddValue(pr.PRname, (object)pr.PRvalue, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
if (pr.PRdtTypeCode == InternalPrimitiveTypeE.Invalid)
{
if (pr.PRarrayTypeEnum == InternalArrayTypeE.Base64)
{
parseRecord.PRobjectInfo.AddValue(pr.PRname, (object)Convert.FromBase64String(pr.PRvalue), ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
if (pr.PRdtType == Converter.typeofObject)
{
throw new SerializationException(Environment.GetResourceString("Serialization_TypeMissing", (object)pr.PRname));
}
this.ParseString(pr, parseRecord);
if (pr.PRdtType == Converter.typeofSystemVoid)
{
parseRecord.PRobjectInfo.AddValue(pr.PRname, (object)pr.PRdtType, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
if (!parseRecord.PRobjectInfo.isSi)
{
break;
}
parseRecord.PRobjectInfo.AddValue(pr.PRname, (object)pr.PRvalue, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
object obj = pr.PRvarValue == null?Converter.FromString(pr.PRvalue, pr.PRdtTypeCode) : pr.PRvarValue;
parseRecord.PRobjectInfo.AddValue(pr.PRname, obj, ref parseRecord.PRsi, ref parseRecord.PRmemberData);
break;
}
this.ParseError(pr, parseRecord);
break;
}
}