wpisz xxxx nie oczekiwane użyj xmlinclude lub soapinclude

Mam ciekawy przypadek tego problemu z serializacją - który był wielokrotnie zadawany na tej stronie i przeszedłem kilka z tych pytań i bezskutecznie wypróbowałem zwykłe przedmioty:

Dodaj [XmlInclude] do klasy powodującej błądUsuń przestrzenie nazwDodaj inną przestrzeń nazw do każdej klasy

Aby dokładniej wyjaśnić, poniżej przedstawiłem uproszczoną wersję mojego kodu. Zasadniczo używamWebServiceHost obiekt do uruchomienia usługi RESTful i jeden z moich punktów końcowych zwraca obiekt serializowany jako XML (opisałem obiekt za pomocą[DataContract] i[DataMember] atrybuty). Ten obiekt zawieraSerializableDictionary<string, object> (tutaj) gdzie wpisano wartość jakoobject. Wierzę, że dlatego zawodzi:

Działa dobrze, gdy wartość jest przypisana prymitywuKiedy przypisuję niestandardowy obiekt do pary KV V, otrzymujęnieoczekiwany typ wyjątek prawdopodobnie dlatego, że Serializer nie wie, jak serilizować obiekt / jakiś problem z nazwami

Oczywiście nie mogę opisać Object.cs za pomocą[XmlInclude] a ponieważ jest to usługa, a ja sam nie serializuję, nie mogę użyć czegoś takiego

new Serializer(typeof(...), new Type[] { ... }}

Jakieś pomysły na to, co mogę zrobić? Myślałem o tym, by nie wpisywać wartości dykt jako obiektu i bardziej kometującego, ale problem polega na tym, że ta wartość może przyjmować prymitywy lub typy cusotm. Jakiś kod wyjaśniający powyższe:

Edytować: Zaktualizowałem poniższy kod, aby był bardziej przejrzysty

[DataContract]
public class ResponseObject
{
    [DataMember(Name = "data")]
    public SerializableDictionary<string, object> Data { get;set; }

    public ResponseObject()
    {
        Data = new SerializableDictionary<string, object>();
    }
}

...

var d1 = new ResponseObject();
d1.Data.Add("some key", "some value"); //WORKS AND SERIALIZES PERFECLTY

var d2 = new ResponseObject();
d2.Data.Add("some other key", new SomeOtherObjecT());
var d3 = new ResponseObject();
d3.Data.Add("another key", d2);  //THIS THROWS THE UNEXPECTED TYPE ERROR WHEN SEIRLAIZING SomeOtherObject

Edytować: Błąd jest generowany w SerializableDictionary, gdzie próbuje serializować obiekt typu ResponseObject. Oba są w oddzielnych projektach - jeśli to jest znaczące?

questionAnswers(1)

yourAnswerToTheQuestion