いくつかのデータ契約を結んでいるWCFサービスがあります。私はWebサービスソフトウェアファクトリーを使用しています。このファクトリーは、デザイナーを使用してすべてのメッセージとデータ、およびその他のコントラクトを作成し、それらを部分的なクラスとして作成します。コードが再生成されると、クラスが再作成されます。
using WcfSerialization = global::System.Runtime.Serialization;
[WcfSerialization::CollectionDataContract(Namespace = "urn:CAEService.DataContracts", ItemName = "SecurityItemCollection")]
public partial class SecurityItemCollection : System.Collections.Generic.List<SecurityItem>
{
}
データコントラクトは、正常に機能していたカスタムクラスの一般的なリストです。ただし、このクラスにプロパティを追加したいので、同じ名前空間にこの部分クラスを追加しました。
public partial class SecurityItemCollection
{
public int TotalRecords { get; set; }
}
これはサービス側では正常に機能しているようですが、クライアントからサービス参照をコンパイルして更新すると、クラスに新しいプロパティがありません。つまり、クラスをシリアル化してクライアント側で再作成すると、新しいプロパティが失われます。財産。なぜこれなのか誰もが知っていますか?
TIA
編集:わかりました、これは公式に私を狂わせています。私が見ることができる唯一のことは、DataContractの代わりにCollectionDataContract属性を使用しているということです。これはどういうわけかクラスのデータメンバーをシリアル化することを許可しませんか?なぜそうなるのでしょうか?サービス側では正常に機能しています。値を確認して入力しても問題ありません。ただし、クライアントでサービス参照を更新しても、データメンバーのないコレクションクラスだけで何もありません。