Stetic.ObjectWrapper.ReadObject C# (CSharp) Method

ReadObject() public static method

public static ReadObject ( ObjectReader reader, XmlElement elem ) : ObjectWrapper
reader ObjectReader
elem System.Xml.XmlElement
return ObjectWrapper
        public static ObjectWrapper ReadObject(ObjectReader reader, XmlElement elem)
        {
            string className = elem.GetAttribute ("class");
            ClassDescriptor klass;
            if (reader.Format == FileFormat.Native)
                klass = Registry.LookupClassByName (className);
            else
                klass = Registry.LookupClassByCName (className);

            if (klass == null) {
                ErrorWidget we = new ErrorWidget (className, elem.GetAttribute ("id"));
                ErrorWidgetWrapper wrap = (ErrorWidgetWrapper) Create (reader.Project, we);
                wrap.Read (reader, elem);
                return wrap;
            }
            if (!klass.SupportsGtkVersion (reader.Project.TargetGtkVersion)) {
                ErrorWidget we = new ErrorWidget (className, klass.TargetGtkVersion, reader.Project.TargetGtkVersion, elem.GetAttribute ("id"));
                ErrorWidgetWrapper wrap = (ErrorWidgetWrapper) Create (reader.Project, we);
                wrap.Read (reader, elem);
                return wrap;
            }

            ObjectWrapper wrapper = klass.CreateWrapper ();
            wrapper.classDescriptor = klass;
            wrapper.proj = reader.Project;
            try {
                wrapper.OnBeginRead (reader.Format);
                wrapper.Read (reader, elem);
            } catch (Exception ex) {
                Console.WriteLine (ex);
                ErrorWidget we = new ErrorWidget (ex, elem.GetAttribute ("id"));
                ErrorWidgetWrapper wrap = (ErrorWidgetWrapper) Create (reader.Project, we);
                wrap.Read (reader, elem);
                return wrap;
            } finally {
                wrapper.OnEndRead (reader.Format);
            }
            return wrapper;
        }