System.Runtime.Serialization.ObjectHolder.RemoveDependency C# (CSharp) Method

RemoveDependency() private method

Removes a dependency of the object represented in this holder. This is normally the result of the dependency having been filled when the object is going to be only partially completed. If we plan to fully update the object, we do not take the work to do this.
private RemoveDependency ( long id ) : void
id long The id of the object for which to remove the dependency.
return void
        internal void RemoveDependency(long id)
        {
            Debug.Assert(_dependentObjects != null, "[ObjectHolder.RemoveDependency]m_dependentObjects!=null");
            Debug.Assert(id >= 0, "[ObjectHolder.RemoveDependency]id>=0");
            _dependentObjects.RemoveElement(id);
        }

Usage Example

コード例 #1
0
ファイル: ObjectManager.cs プロジェクト: randomize/VimConfig
        internal void CompleteObject(ObjectHolder holder, bool bObjectFullyComplete)
        {
            FixupHolderList missingElements = holder.m_missingElements;
            object          member          = null;
            ObjectHolder    holder3         = null;
            int             num             = 0;

            if (holder.ObjectValue == null)
            {
                throw new SerializationException(Environment.GetResourceString("Serialization_MissingObject", new object[] { holder.m_id }));
            }
            if (missingElements != null)
            {
                if (holder.HasSurrogate || holder.HasISerializable)
                {
                    SerializationInfo serInfo = holder.m_serInfo;
                    if (serInfo == null)
                    {
                        throw new SerializationException(Environment.GetResourceString("Serialization_InvalidFixupDiscovered"));
                    }
                    if (missingElements != null)
                    {
                        for (int i = 0; i < missingElements.m_count; i++)
                        {
                            if ((missingElements.m_values[i] != null) && this.GetCompletionInfo(missingElements.m_values[i], out holder3, out member, bObjectFullyComplete))
                            {
                                object objectValue = holder3.ObjectValue;
                                if (this.CanCallGetType(objectValue))
                                {
                                    serInfo.UpdateValue((string)member, objectValue, objectValue.GetType());
                                }
                                else
                                {
                                    serInfo.UpdateValue((string)member, objectValue, typeof(MarshalByRefObject));
                                }
                                num++;
                                missingElements.m_values[i] = null;
                                if (!bObjectFullyComplete)
                                {
                                    holder.DecrementFixupsRemaining(this);
                                    holder3.RemoveDependency(holder.m_id);
                                }
                            }
                        }
                    }
                }
                else
                {
                    for (int j = 0; j < missingElements.m_count; j++)
                    {
                        MemberInfo  info2;
                        FixupHolder fixup = missingElements.m_values[j];
                        if ((fixup == null) || !this.GetCompletionInfo(fixup, out holder3, out member, bObjectFullyComplete))
                        {
                            continue;
                        }
                        if (holder3.TypeLoadExceptionReachable)
                        {
                            holder.TypeLoadException = holder3.TypeLoadException;
                            if (holder.Reachable)
                            {
                                throw new SerializationException(string.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_TypeLoadFailure"), new object[] { holder.TypeLoadException.TypeName }));
                            }
                        }
                        if (holder.Reachable)
                        {
                            holder3.Reachable = true;
                        }
                        switch (fixup.m_fixupType)
                        {
                        case 1:
                            if (holder.RequiresValueTypeFixup)
                            {
                                throw new SerializationException(Environment.GetResourceString("Serialization_ValueTypeFixup"));
                            }
                            break;

                        case 2:
                            info2 = (MemberInfo)member;
                            if (info2.MemberType != MemberTypes.Field)
                            {
                                throw new SerializationException(Environment.GetResourceString("Serialization_UnableToFixup"));
                            }
                            if (!holder.RequiresValueTypeFixup || !holder.ValueTypeFixupPerformed)
                            {
                                goto Label_024C;
                            }
                            if (!this.DoValueTypeFixup((FieldInfo)info2, holder, holder3.ObjectValue))
                            {
                                throw new SerializationException(Environment.GetResourceString("Serialization_PartialValueTypeFixup"));
                            }
                            goto Label_0260;

                        default:
                            throw new SerializationException(Environment.GetResourceString("Serialization_UnableToFixup"));
                        }
                        ((Array)holder.ObjectValue).SetValue(holder3.ObjectValue, (int[])member);
                        goto Label_0293;
Label_024C:
                        FormatterServices.SerializationSetValue(info2, holder.ObjectValue, holder3.ObjectValue);
Label_0260:
                        if (holder3.RequiresValueTypeFixup)
                        {
                            holder3.ValueTypeFixupPerformed = true;
                        }
Label_0293:
                        num++;
                        missingElements.m_values[j] = null;
                        if (!bObjectFullyComplete)
                        {
                            holder.DecrementFixupsRemaining(this);
                            holder3.RemoveDependency(holder.m_id);
                        }
                    }
                }
                this.m_fixupCount -= num;
                if (missingElements.m_count == num)
                {
                    holder.m_missingElements = null;
                }
            }
        }
All Usage Examples Of System.Runtime.Serialization.ObjectHolder::RemoveDependency