diff --git a/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs b/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs index 54e67fc98..1417718aa 100644 --- a/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs +++ b/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs @@ -294,162 +294,6 @@ namespace ICSharpCode.Decompiler.Util AddResource(name, value, string.Empty); } - public void AddMetadata(string name, string value) - { - if (name == null) - throw new ArgumentNullException(nameof(name)); - - if (value == null) - throw new ArgumentNullException(nameof(value)); - - if (written) - throw new InvalidOperationException("The resource is already generated."); - - if (writer == null) - InitWriter(); - - writer.WriteStartElement("metadata"); - writer.WriteAttributeString("name", name); - writer.WriteAttributeString("xml:space", "preserve"); - - writer.WriteElementString("value", value); - - writer.WriteEndElement(); - } - - public void AddMetadata(string name, byte[] value) - { - if (name == null) - throw new ArgumentNullException(nameof(name)); - - if (value == null) - throw new ArgumentNullException(nameof(value)); - - if (written) - throw new InvalidOperationException("The resource is already generated."); - - if (writer == null) - InitWriter(); - - writer.WriteStartElement("metadata"); - writer.WriteAttributeString("name", name); - - writer.WriteAttributeString("type", value.GetType().AssemblyQualifiedName); - - writer.WriteStartElement("value"); - WriteNiceBase64(value, 0, value.Length); - writer.WriteEndElement(); - - writer.WriteEndElement(); - } - - public void AddMetadata(string name, object value) - { - if (value is string) - { - AddMetadata(name, (string)value); - return; - } - - if (value is byte[]) - { - AddMetadata(name, (byte[])value); - return; - } - - if (name == null) - throw new ArgumentNullException(nameof(name)); - - if (value == null) - throw new ArgumentNullException(nameof(value)); - - if (!value.GetType().IsSerializable) - throw new InvalidOperationException(String.Format("The element '{0}' of type '{1}' is not serializable.", name, value.GetType().Name)); - - if (written) - throw new InvalidOperationException("The resource is already generated."); - - if (writer == null) - InitWriter(); - - Type type = value.GetType(); - - TypeConverter converter = TypeDescriptor.GetConverter(value); - if (converter != null && converter.CanConvertTo(typeof(string)) && converter.CanConvertFrom(typeof(string))) - { - string str = (string)converter.ConvertToInvariantString(value); - writer.WriteStartElement("metadata"); - writer.WriteAttributeString("name", name); - if (type != null) - writer.WriteAttributeString("type", type.AssemblyQualifiedName); - writer.WriteStartElement("value"); - writer.WriteString(str); - writer.WriteEndElement(); - writer.WriteEndElement(); - writer.WriteWhitespace("\n "); - return; - } - - if (converter != null && converter.CanConvertTo(typeof(byte[])) && converter.CanConvertFrom(typeof(byte[]))) - { - byte[] b = (byte[])converter.ConvertTo(value, typeof(byte[])); - writer.WriteStartElement("metadata"); - writer.WriteAttributeString("name", name); - - if (type != null) - { - writer.WriteAttributeString("type", type.AssemblyQualifiedName); - writer.WriteAttributeString("mimetype", ByteArraySerializedObjectMimeType); - writer.WriteStartElement("value"); - WriteNiceBase64(b, 0, b.Length); - } - else - { - writer.WriteAttributeString("mimetype", BinSerializedObjectMimeType); - writer.WriteStartElement("value"); - writer.WriteBase64(b, 0, b.Length); - } - - writer.WriteEndElement(); - writer.WriteEndElement(); - return; - } - - MemoryStream ms = new MemoryStream(); - BinaryFormatter fmt = new BinaryFormatter(); - try - { - fmt.Serialize(ms, value); - } - catch (Exception e) - { - throw new InvalidOperationException("Cannot add a " + value.GetType() + - "because it cannot be serialized: " + - e.Message); - } - - writer.WriteStartElement("metadata"); - writer.WriteAttributeString("name", name); - - if (type != null) - { - writer.WriteAttributeString("type", type.AssemblyQualifiedName); - writer.WriteAttributeString("mimetype", ByteArraySerializedObjectMimeType); - writer.WriteStartElement("value"); - WriteNiceBase64(ms.GetBuffer(), 0, ms.GetBuffer().Length); - } - else - { - writer.WriteAttributeString("mimetype", BinSerializedObjectMimeType); - writer.WriteStartElement("value"); - writer.WriteBase64(ms.GetBuffer(), 0, ms.GetBuffer().Length); - } - - writer.WriteEndElement(); - writer.WriteEndElement(); - ms.Close(); - } - public void Close() { if (writer != null)