Exemple #1
0
        private void ObjectReferenceElementReconstruction(object obj)
        {
            var props = TypeDescriptor.GetProperties(obj);

            foreach (PropertyDescriptor p in props)
            {
                object src = p.GetValue(obj);
                if (p.PropertyType == typeof(ReferenceElement))
                {
                    ReferenceElement re = (ReferenceElement)src;
                    if ((re != null) && (re.Element == null))
                    {
                        re.Element = GetObject(re);
                        //p.SetValue(obj, re);
                    }
                }
                //else if (p.PropertyType is IList)
                else if (src is IList)
                {
                    foreach (object elem in (src as IList))
                    {
                        var t = elem.GetType();
                        if (t.IsClass)
                        {
                            if (elem is ReferenceElement)
                            {
                                ReferenceElement re = (ReferenceElement)elem;
                                if ((re != null) && (re.Element == null))
                                {
                                    re.Element = GetObject(re);
                                    //p.SetValue(obj, re);
                                }
                            }
                            else
                            {
                                ObjectReferenceElementReconstruction(elem);
                            }
                        }
                    }
                }
                else if (p.PropertyType.IsClass)
                {
                    ObjectReferenceElementReconstruction(src);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Gets the Open element object from the Reference element
        /// </summary>
        /// <param name="element">Reference element</param>
        /// <returns>The instance of  OpenElementId object</returns>
        public OpenElementId GetObject(ReferenceElement element)
        {
            if (element.Element != null)
            {
                return(element.Element);
            }

            IList obj;

            if (!GetData().TryGetValue(element.TypeName, out obj))
            {
                return(null);
            }

            //var lst = obj as List<OpenElementId>;
            var lst = ((IEnumerable)obj).Cast <OpenElementId>();

            return(lst.OfType <OpenElementId>().FirstOrDefault(it => it.Id == element.Id));
        }