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); }
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; } }