[Mono-bugs] [Bug 640402] New: XmlSerialization and GetConstructor not working on generic types
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Sun Sep 19 12:21:54 EDT 2010
https://bugzilla.novell.com/show_bug.cgi?id=640402
https://bugzilla.novell.com/show_bug.cgi?id=640402#c0
Summary: XmlSerialization and GetConstructor not working on
generic types
Classification: Mono
Product: MonoTouch
Version: unspecified
Platform: Macintosh
OS/Version: Mac OS X 10.6
Status: NEW
Severity: Major
Priority: P5 - None
Component: Runtime
AssignedTo: mono-bugs at lists.ximian.com
ReportedBy: johan.otto at justenough.com
QAContact: mono-bugs at lists.ximian.com
CC: johan.otto at justenough.com
Found By: Customer
Blocker: Yes
Description of Problem:
Steps to reproduce the problem:
1. Create a class that inherits from a generic class that has a
[Preserve(AllMembers=true)]. In my case I have the following (simplified):
[Preserve(AllMembers=true)]
public class BusinessObject
{
}
[XmlType]
public partial class Customer : BusinessObject
{
[XmlAttribute]
public string Name {get; set;}
}
[Preserve(AllMembers=true)]
public class BusinessObjects<T> : Collection<T> where T: BusinessObject
{
public BusinessObjects()
{
}
public BusinessObjects(BusinessObject owner):this()
{
}
}
[XmlRoot("Customers")]
public partial class Customers : BusinessObjects<Customer>
{
public Customers(Organization owner):base(owner) // Can remove for
testing pruposes
{
}
public Customers():base()
{
}
}
2. Now try and use the the XmlSerializer to serialize the class.
3. Also try and call this extension method I wrote... always returns false.
public static bool HasDefaultConstructor(this Type type)
{
if (type.IsPrimitive)
{
return true;
}
if (type.GetConstructor(
BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.CreateInstance, null, new Type[0], null) !=
null)
{
return true;
}
return false;
}
----- Test Xml
<Customers>
<Customer Name="Zim" />
<Customer Name="Zum" />
</Customers>
Actual Results:
The constructor does not get preserved when using reflection even though
[Preserve(AllMembers=true)] on the base class.
The XmlSerializer failes with a SIGNEV
Expected Results:
How often does this happen?
if the class is not used directly in the code path from Main()... everytime
Additional Information:
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list