IfcDoc.Schema.SEntity.Mark C# (CSharp) Méthode

Mark() public méthode

Marks object as in-use (setting Exists to True) such that any unmarked objects may then be garbage collected.
public Mark ( ) : void
Résultat void
        public void Mark()
        {
            if (this.Existing)
                return;

            this.Existing = true;

            Type t = this.GetType();
            IList<FieldInfo> listFields = SEntity.GetFieldsOrdered(t);
            foreach (FieldInfo field in listFields)
            {
                if (typeof(SEntity).IsAssignableFrom(field.FieldType))
                {
                    SEntity obj = field.GetValue(this) as SEntity;
                    if(obj != null)
                    {
                        obj.Mark();
                    }
                }
                else if(field.FieldType.IsGenericType && field.FieldType.GetGenericTypeDefinition() == typeof(List<>) &&
                    typeof(SEntity).IsAssignableFrom(field.FieldType.GetGenericArguments()[0]))

                {
                    System.Collections.IList list = (System.Collections.IList)field.GetValue(this) as System.Collections.IList;
                    if(list != null)
                    {
                        foreach(object obj in list)
                        {
                            if(obj is SEntity)
                            {
                                SEntity ent = (SEntity)obj;
                                ent.Mark();
                            }
                        }
                    }
                }
            }
        }

Usage Example

Exemple #1
0
        /// <summary>
        /// Marks object as in-use (setting Exists to True) such that any unmarked objects may then be garbage collected.
        /// </summary>
        public void Mark()
        {
            if (this.Existing)
            {
                return;
            }

            this.Existing = true;

            Type t = this.GetType();
            IList <FieldInfo> listFields = SEntity.GetFieldsOrdered(t);

            foreach (FieldInfo field in listFields)
            {
                if (typeof(SEntity).IsAssignableFrom(field.FieldType))
                {
                    SEntity obj = field.GetValue(this) as SEntity;
                    if (obj != null)
                    {
                        obj.Mark();
                    }
                }
                else if (field.FieldType.IsGenericType && field.FieldType.GetGenericTypeDefinition() == typeof(List <>) &&
                         typeof(SEntity).IsAssignableFrom(field.FieldType.GetGenericArguments()[0]))

                {
                    System.Collections.IList list = (System.Collections.IList)field.GetValue(this) as System.Collections.IList;
                    if (list != null)
                    {
                        foreach (object obj in list)
                        {
                            if (obj is SEntity)
                            {
                                SEntity ent = (SEntity)obj;
                                ent.Mark();
                            }
                        }
                    }
                }
            }
        }