Esempio n. 1
0
        private void ParseDataNode(bool meta)
        {
            OrderedDictionary hashtable = ((meta && !useResXDataNodes) ? hashtm : hasht);
            Point             pos       = new Point(xmlReader.LineNumber, xmlReader.LinePosition);
            string            name      = GetAttribute("name");
            string            type_name = GetAttribute("type");
            string            mime_type = GetAttribute("mimetype");


            string comment = null;
            string value   = GetDataValue(meta, out comment);

            ResXDataNode node = new ResXDataNode(name, mime_type, type_name, value, comment, pos, BasePath);

            if (useResXDataNodes)
            {
                hashtable [name] = node;
                return;
            }

            if (name == null)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
                                                          "Could not find a name for a resource. The resource value was '{0}'.",
                                                          node.GetValue((AssemblyName [])null).ToString()));
            }

            // useResXDataNodes is false, add to dictionary of values
            if (assemblyNames != null)
            {
                try {
                    hashtable [name] = node.GetValue(assemblyNames);
                } catch (TypeLoadException ex) {
                    // different error messages depending on type of resource, hacky solution
                    if (node.handler is TypeConverterFromResXHandler)
                    {
                        hashtable [name] = null;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            else                 // there is a typeresolver or its null
            {
                try {
                    hashtable [name] = node.GetValue(typeresolver);
                } catch (TypeLoadException ex) {
                    if (node.handler is TypeConverterFromResXHandler)
                    {
                        hashtable [name] = null;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
        }
Esempio n. 2
0
        public void AddResource(ResXDataNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            if (writer == null)
            {
                InitWriter();
            }

            if (node.IsWritable)
            {
                WriteWritableNode(node);
            }
            else if (node.FileRef != null)
            {
                AddResource(node.Name, node.FileRef, node.Comment);
            }
            else
            {
                AddResource(node.Name, node.GetValue((AssemblyName [])null), node.Comment);
            }
        }
Esempio n. 3
0
 // avoids instantiating objects
 void WriteWritableNode(ResXDataNode node)
 {
     writer.WriteStartElement("data");
     writer.WriteAttributeString("name", node.Name);
     if (!(node.Type == null || node.Type.Equals(String.Empty)))
     {
         writer.WriteAttributeString("type", node.Type);
     }
     if (!(node.MimeType == null || node.MimeType.Equals(String.Empty)))
     {
         writer.WriteAttributeString("mimetype", node.MimeType);
     }
     writer.WriteStartElement("value");
     writer.WriteString(node.DataString);
     writer.WriteEndElement();
     if (!(node.Comment == null || node.Comment.Equals(String.Empty)))
     {
         writer.WriteStartElement("comment");
         writer.WriteString(node.Comment);
         writer.WriteEndElement();
     }
     writer.WriteEndElement();
     writer.WriteWhitespace("\n  ");
 }