GetMemberInfo() private method

private GetMemberInfo ( string name ) : MemberInfo
name string
return System.Reflection.MemberInfo
示例#1
0
        internal void Fixup(ParseRecord record, ParseRecord parent)
        {
            object obj = record._newObj;

            switch (_valueFixupEnum)
            {
            case ValueFixupEnum.Array:
                _arrayObj.SetValue(obj, _indexMap);
                break;

            case ValueFixupEnum.Header:
                throw new PlatformNotSupportedException();

            case ValueFixupEnum.Member:
                if (_objectInfo._isSi)
                {
                    _objectInfo._objectManager.RecordDelayedFixup(parent._objectId, _memberName, record._objectId);
                }
                else
                {
                    MemberInfo memberInfo = _objectInfo.GetMemberInfo(_memberName);
                    if (memberInfo != null)
                    {
                        _objectInfo._objectManager.RecordFixup(parent._objectId, memberInfo, record._objectId);
                    }
                }
                break;
            }
        }
示例#2
0
        internal void Fixup(ParseRecord record, ParseRecord parent)
        {
            Object obj = record.PRnewObj;

#if _DEBUG
            SerTrace.Log(this, "Fixup ", obj, " ", ((Enum)valueFixupEnum).ToString());
#endif
            switch (valueFixupEnum)
            {
            case ValueFixupEnum.Array:
                arrayObj.SetValue(obj, indexMap);
                break;

            case ValueFixupEnum.Header:
                Type type = typeof(Header);
                if (valueInfo == null)
                {
                    MemberInfo[] valueInfos = type.GetMember("Value");
                    if (valueInfos.Length != 1)
                    {
                        throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_HeaderReflection"), valueInfos.Length));
                    }
                    valueInfo = valueInfos[0];
                }
                FormatterServices.SerializationSetValue(valueInfo, header, obj);
                break;

            case ValueFixupEnum.Member:
                SerTrace.Log(this, "Fixup Member new object value ", obj, " memberObject ", memberObject);

                if (objectInfo.isSi)
                {
                    SerTrace.Log(this, "Recording a fixup on member: ", memberName,
                                 " in object id", parent.PRobjectId, " Required Object ", record.PRobjectId);
                    objectInfo.objectManager.RecordDelayedFixup(parent.PRobjectId, memberName, record.PRobjectId);
//                          Console.WriteLine("SerializationInfo: Main Object ({0}): {1}. SubObject ({2}): {3}", parent.PRobjectId,
//                                            objectInfo.obj, record.PRobjectId, obj);
                }
                else
                {
                    MemberInfo memberInfo = objectInfo.GetMemberInfo(memberName);
                    SerTrace.Log(this, "Recording a fixup on member:", memberInfo, " in object id ",
                                 parent.PRobjectId, " Required Object", record.PRobjectId);
                    if (memberInfo != null)
                    {
                        objectInfo.objectManager.RecordFixup(parent.PRobjectId, memberInfo, record.PRobjectId);
                    }
//                          Console.WriteLine("MemberFixup: Main Object({0}): {1}. SubObject({2}): {3}", parent.PRobjectId,
//                                            objectInfo.obj.GetType(), record.PRobjectId, obj.GetType());
                }
                break;
            }
        }
示例#3
0
        internal void Fixup(ParseRecord record, ParseRecord parent)
        {
            object obj = record._newObj;

            switch (_valueFixupEnum)
            {
            case ValueFixupEnum.Array:
                _arrayObj.SetValue(obj, _indexMap);
                break;

            case ValueFixupEnum.Header:
                Type type = typeof(Header);
                if (_valueInfo == null)
                {
                    MemberInfo[] valueInfos = type.GetMember("Value");
                    if (valueInfos.Length != 1)
                    {
                        throw new SerializationException(SR.Format(SR.Serialization_HeaderReflection, valueInfos.Length));
                    }
                    _valueInfo = valueInfos[0];
                }
                FormatterServices.SerializationSetValue(_valueInfo, _header, obj);
                break;

            case ValueFixupEnum.Member:
                if (_objectInfo._isSi)
                {
                    _objectInfo._objectManager.RecordDelayedFixup(parent._objectId, _memberName, record._objectId);
                }
                else
                {
                    MemberInfo memberInfo = _objectInfo.GetMemberInfo(_memberName);
                    if (memberInfo != null)
                    {
                        _objectInfo._objectManager.RecordFixup(parent._objectId, memberInfo, record._objectId);
                    }
                }
                break;
            }
        }