Serialization doesn't accept my KnownTypeAttribute, why?

I've got stuck with a serialization problem. My Silverlight app doesn't expect one of my properties in a businessobject and doesn't know what to do about it. Previously I have solved this by setting a KnownTypeAttribute like the example below but in this case it doesn't work.

I have used to solve it like this:

[DataContract(Name = "baseClass")]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
[KnownType(typeof(busObj1))]
public class busObj2 : baseClass
{
    public busObj1 myObj { get; set; }
}

The only difference know is that I have slightly different structure, like this:

[DataContract(Name = "baseClass")]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
[KnownType(typeof(busObj1))]
public class busObj2 : baseClass
{
    public busObj1 myObj { get; set; }
}

// This is the class that I want to send via WCF and that cannot be serialized
// because the serializer doesn't expect busObj1.
[DataContract(Name = "busObj3")]
public class busObj3 : busObj2 { }

I'm very thankful for any ideas of what could be wrong!

Regards, Clas

Answers


You need to put the known type attribute on your base object:

[DataContract(Name = "baseClass")]
[KnownType(typeof(busObj1))]
[KnownType(typeof(busObj2))]
[KnownType(typeof(busObj3))]
[KnownType(typeof(busObj4))]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
public class busObj2 : baseClass { }

[DataContract(Name = "busObj3")]
public class busObj3 : busObj1
{
    public busObj2 myObj { get; set; }
}

[DataContract(Name = "busObj4")]
public class busObj4 : busObj3 { }

or if you don't want to pollute your domain models with those attribtues you could also do it in your web.config or use the ServiceKnownType attribute on your Service Contract.


Need Your Help

Globally define parts of virtualhost definition to reduce redundancy

apache virtualhost

I have setup an apache server and this apache server points to a bunch of virtualhosts.

PHP sitemap generator strips tag

php

This is my code to create xml sitemap. But problem is that when it creates xml file it doesn't include <?xml version="1.0" encoding="UTF-8"?>. It includes every tag wirteen in my function exc...