.net WebApiを使用してWebサービスを作成していますが、プロパティの1つが派生クラスのIEnumerableである場合に、クラスをXMLにシリアル化する際に問題が発生します。私はknownTypeベットを追加しようとしましたが、次のエラーが発生します:
「エラー1属性'KnownType'は、この宣言タイプでは無効です。'class、struct'宣言でのみ有効です。」
JSONシリアル化は完璧に機能しますが、XMLの場合は次のようになります。
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace/>
<InnerException>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Type 'test.order' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types.
</ExceptionMessage>
....
派生クラスの例
public class orderDetailBase
{
public int sequence { get; set; }
//.... more properties
}
public class onlineOrderDetail : orderDetailBase
{
public string ip { get; set; }
//.... more properties
}
public class inStoreOrderDetail : orderDetailBase
{
public string storeAddress { get; set; }
//.... more properties
}
シリアルジーへのクラス
public class order
{
public int orderNumber{ get; set; }
//..... more
public IEnumerable<orderDetailBase> { get; set; } // Serializing this causes issues
この問題を回避する方法はありますか?ありがとう!