Я не могу заставить этот сценарий работать. Вот образец -
[DataContract]
/*abstract*/ class BaseT
{ ... }
[DataContract]
class ChildT : BaseT
{ ... }
[DataContract]
class MessageContents
{
[DataMember]
public BaseT[] XX; // Array of BaseT objects. I need WCF to somehow figure out that they're actually ChildT.
}
// ...receive a webHttp request of type MessageContents...
// cast to use MessageContents.XX as a ChildT[] instead of a BaseT[]
ConcreteClass[] QQ = (ConcreteClass[])request.xx;
Я пытался аннотировать практически все с KnownType или KnownServiceType, но безрезультатно.
Если я делаю BaseT абстрактным, я получаю ошибку десериализации «не могу создать абстрактный класс». Если я сделаю BaseT конкретным, я не получу ошибку десериализации. Вместо этого, когда я призываю привести его к ChildT, я не могу привести объект типа BaseT [] к типу ChildT [] '.