Updated offsets tool to latest CppSharp.
void LookupTypeConvertor ()
{
- // We only need this for System.Xml.Linq.
- var convertor = type.GetCustomAttribute<XmlTypeConvertorAttribute> ();
- if (convertor != null)
- typeConvertor = type.GetMethod (convertor.Method, BindingFlags.Static | BindingFlags.NonPublic);
+ // We only need this for System.Xml.Linq
+ var t = type;
+ // HACK: because interpreter array handling is so bad
+ if (t.IsArray)
+ t = t.GetElementType ();
+
+ var convertor = t.GetCustomAttribute<XmlTypeConvertorAttribute> ();
+ if (convertor != null) {
+ typeConvertor = t.GetMethod (convertor.Method, BindingFlags.Static | BindingFlags.NonPublic);
+ }
}
internal void ConvertForAssignment (ref object value)
Type type = listType.Type;
if (type.IsArray)
{
- list = EnsureArrayIndex ((Array)list, index, type.GetElementType());
+ list = EnsureArrayIndex ((Array)list, index, type.GetElementType ());
+ listType.ConvertForAssignment (ref value);
((Array)list).SetValue (value, index);
}
else // Must be IEnumerable
}
// test constructors
-#if USE_VERSION_1_1 // It doesn't pass on MS.NET 1.1.
[Test]
+ [ExpectedException (typeof (ArgumentNullException))]
public void TestConstructor()
{
XmlSerializer ser = new XmlSerializer (null, "");
}
-#else
-#endif
// test basic types ////////////////////////////////////////////////////////
[Test]
Assert.AreEqual (xe.Content.ToString (), "<Data />", "#3");
}
+ [XmlType ("Root")]
+ public class DeserializeXElementArray_Data
+ {
+ [XmlAnyElement]
+ public XElement[] Content;
+ }
+
+ [Test]
+ public void DeserializeXElementArray ()
+ {
+ var xmlString = "<Root><Data /></Root>";
+
+ var serializer = new XmlSerializer (typeof (DeserializeXElementArray_Data));
+ var res = serializer.Deserialize (new StringReader (xmlString));
+
+ Assert.IsNotNull (res, "#1");
+ Assert.AreEqual (typeof (DeserializeXElementArray_Data), res.GetType (), "#2");
+ var xe = (DeserializeXElementArray_Data)res;
+ Assert.AreEqual (xe.Content [0].ToString (), "<Data />", "#3");
+ }
+
[Test] // Bug #20151
public void XElementFromArrayWithNullValuesAsObject ()
{