Ejemplo n.º 1
0
        public T Create(string xukLN, string xukNS)
        {
            //string qname = String.Format("{0}:{1}", xukNS, xukLN);
            UglyPrettyName name  = new UglyPrettyName(!PrettyFormat ? xukLN : null, PrettyFormat ? xukLN : null);
            QualifiedName  qname = new QualifiedName(name, xukNS);

            Type t = LookupType(qname);

            if (t == null)
            {
#if DEBUG
                Debugger.Break();
#endif
                return(null);
            }

            T obj = Create(t);

            TypeAndQNames tt = LookupTypeAndQNames(qname);
            DebugFix.Assert(tt != null);
            if (tt.Type == null)
            {
                // not real type of qname => type of first available ancestor in the type inheritance chain.
                obj.MissingTypeOriginalXukedName = tt.QName;
            }

            return(obj);
        }
Ejemplo n.º 2
0
        private void readTypeAndQNamesFromXmlReader(TypeAndQNames tq, XmlReader rd, bool pretty)
        {
            tq.AssemblyName = new AssemblyName(ReadXukAttribute(rd, AssemblyName_NAME));

            if (ReadXukAttribute(rd, AssemblyVersion_NAME) != null)
            {
                tq.AssemblyName.Version = new Version(ReadXukAttribute(rd, AssemblyVersion_NAME));
            }

            tq.ClassName = ReadXukAttribute(rd, FullName_NAME);

            if (tq.AssemblyName != null && tq.ClassName != null)
            {
                try
                {
                    Assembly a = Assembly.Load(tq.AssemblyName);
                    try
                    {
                        tq.Type = a.GetType(tq.ClassName);
                    }
                    catch (Exception ex)
                    {
#if DEBUG
                        Debugger.Break();
#endif
                        Console.WriteLine("ClassName: " + tq.ClassName);
                        Console.WriteLine(ex.Message);
                        Console.WriteLine(ex.StackTrace);

                        tq.Type = null;
                    }
                }
                catch (Exception ex)
                {
#if DEBUG
                    Debugger.Break();
#endif
                    Console.WriteLine("AssemblyName: " + tq.AssemblyName);
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);
                    tq.Type = null;
                }
            }
            else
            {
#if DEBUG
                Debugger.Break();
#endif
                Console.WriteLine("Type XukIn error?!");
                Console.WriteLine("AssemblyName: " + tq.AssemblyName);
                Console.WriteLine("ClassName: " + tq.ClassName);

                tq.Type = null;
            }

            string xukLocalName = ReadXukAttribute(rd, XukLocalName_NAME);

            UglyPrettyName name = null;

            if (tq.Type != null)
            {
                UglyPrettyName nameCheck = GetXukName(tq.Type);
                DebugFix.Assert(nameCheck != null);

                if (nameCheck != null)
                {
                    if (pretty)
                    {
                        DebugFix.Assert(xukLocalName == nameCheck.Pretty);
                    }
                    else
                    {
                        DebugFix.Assert(xukLocalName == nameCheck.Ugly);
                    }

                    name = nameCheck;
                }
            }

            DebugFix.Assert(name != null);
            if (name == null)
            {
                name = new UglyPrettyName(
                    !pretty ? xukLocalName : null,
                    pretty ? xukLocalName : null);
            }

            tq.QName = new QualifiedName(
                name,
                ReadXukAttribute(rd, XukNamespaceUri_NAME) ?? "");

            string baseXukLocalName = ReadXukAttribute(rd, BaseXukLocalName_NAME);
            if (!string.IsNullOrEmpty(baseXukLocalName))
            {
                UglyPrettyName nameBase = new UglyPrettyName(
                    !pretty ? baseXukLocalName : null,
                    pretty ? baseXukLocalName : null);

                tq.BaseQName = new QualifiedName(
                    nameBase,
                    ReadXukAttribute(rd, BaseXukNamespaceUri_NAME) ?? "");
            }
            else
            {
                tq.BaseQName = null;
            }
        }