Я использую DataContract / DataMembers для сериализации моего класса в JSON для веб-службы, и все это прекрасно работает, за исключением одного из моих членов, которым может быть либо класс a, либо класс b, где класс b расширяет класс a.
Если я опускаю параметр KnownType, то во время сериализации генерируется исключение:
Type 'ClassB' with data contract name 'ClassB:http://schemas.datacontract.org/2004/07/MyApp.App_Code' is not expected.
Как и ожидалось, поскольку ClassB является расширением класса A и поэтому не знаетdeserialiser.Поэтому мне нужно добавить атрибут известного типа, который я делаю, к родительскому классу, который содержит член
[KnownType(typeof(ClassB))]
[DataContract]
Это прекрасно компилируется, но страница, на которой я сейчас тестирую это, кажется странной,он загружается нормально, однако, очевидно, что Сервис больше не существует, как мне говорит мой JS-вызов, а также выбрасывает и выдает ошибку.Но я понятия не имею, почему добавление атрибута известного типа в мой класс приводит к тому, что веб-сервис, по-видимому, не существует: s
Это как-то связано с тем фактом, что мои настройки - это ClassA, ClassB: ClassA и всепримеры, которые я видел, кажутся показом установки ClassA: ParentClass, ClassB: ParentClass.
.NET 4, VWD 2010express