"Cannot serialize because it is an interface." exception message.

Hi,

I am trying to DE-serialize an object,  but when i attempt to do so, i get the error:  "Cannot serialize member 'items'  of type 'ImyItem'   because it is an interface.  The class member it is referring to is ;

public List<ImyItem> items {
    get { return this._items; }
    set { this._items = value; }
}

the interface 'ImyItem' defines the member variables and a few methods for the 'my'Item' objects.  Why am i getting this error on deserialization?  The code to deserialize  that i am using is;

System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName);
    XmlSerializer ser = new XmlSerializer(typeof(WS.MyClass));
        MyClass ob = (MyClass)ser.Deserialize(sr);

        System.console.writeline(ob.name.tostring());
        sr.Close();


Any help with this would be greatly appriciated!!
creatiiveAsked:
Who is Participating?
 
torrie01Connect With a Mentor Commented:
Unfortunately you cannot serialize/deserialize an interface because there is no implementation in the interface itself.  Your 'myItem' class implements the 'Imyitem', but any other class could also implement that interface, so the serializer would not know which implementation to use.  Instead, make your List a list of myItem objects (public List<myItem> items) and it should deserialize fine.
0
 
johnaryanCommented:
You can only Serialise concrete types. This is an annoying limitation of Serialization and one that means you must consider your Design Pattern before you implement any code.

If possibe, you should serialise the contrete class that underlies then ImyItem to get it to work.

J
0
All Courses

From novice to tech pro — start learning today.