WCF操作を介して一般的なリストを渡すときに問題が発生しています。この場合、int の List があります。例 4 については、こちらの MSDNで説明されています。MSDN サンプルでは、次のように説明されていることに注意してください。
// これは、一般的な List が既知の型に追加された int[] と同等であるため、正常にシリアライズおよびデシリアライズされます。
上記は、DataContract です。
[DataContract]
[KnownType(typeof(int[]))]
[KnownType(typeof(object[]))]
public class AccountData
{
[DataMember]
public object accNumber1;
[DataMember]
public object accNumber2;
[DataMember]
public object accNumber3;
[DataMember]
public object accNumber4;
}
クライアント側では、次のように操作を呼び出しています。
DataTransfer.Service.AccountData data = new DataTransfer.Service.AccountData()
{
accNumber1 = 100,
accNumber2 = new int[100],
accNumber3 = new List<int>(),
accNumber4 = new ArrayList()
};
cService.AddAccounts(data);
また、生成された AccountData obj (WCF プロキシ) の装飾は次のとおりです。
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="AccountData", Namespace="http://schemas.datacontract.org/2004/07/DataTransfer.Service")]
[System.SerializableAttribute()]
[System.Runtime.Serialization.KnownTypeAttribute(typeof(DataTransfer.Client.CustomerServiceReference.PurchaseOrder))]
[System.Runtime.Serialization.KnownTypeAttribute(typeof(DataTransfer.Client.CustomerServiceReference.Customer))]
[System.Runtime.Serialization.KnownTypeAttribute(typeof(int[]))]
[System.Runtime.Serialization.KnownTypeAttribute(typeof(object[]))]
例外は次のとおりです。
パラメータ http://tempuri.org/:myEntityをシリアライズしようとしてエラーが発生しました。InnerException メッセージは、データ コントラクト名 'ArrayOfint: http://schemas.microsoft.com/2003/10/Serialization/Arrays ' を持つ 'Type Generic List' でした。静的に知られていないタイプを既知のタイプのリストに追加します