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 klasyAby 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:
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?