C#WCFデータ契約パートクラス - 2番目の部分クラスの新しいフィールドがピックアップされていません
-
10-10-2019 - |
質問
データ契約がいくつかあるWCFサービスがあります。私はWeb Service Software Factoryを使用しています。これは、デザイナーを使用してすべてのメッセージとデータ、その他の契約を作成し、部分的なクラスとして作成します。コードが再生されると、クラスが再作成されます。
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; }
}
これはサービス側で正常に動作しているようですが、クライアントからサービスリファレンスをコンパイルして更新すると、クラスには新しいプロパティがありません。財産。なぜこれがなぜなのか知っていますか?
ティア
編集:わかりました、これは正式に私を運転しています。私が見ることができる唯一のことは、それがDataContractの代わりにCollectionDatacontract属性を使用していることです。これにより、クラス内のデータメンバーがシリアル化されることはありませんか?なぜそうなるのでしょうか?それはサービス側で正常に動作しています - 私は問題を問題なく見て、埋めることができます。ただし、クライアントのサービス紹介を更新すると、データメンバーのないColelctionクラスだけがありません。
解決 2
多くの検索の後、私は最終的に、これがCollectionDatacontractがデータメンバーを持たないためにマークされたクラスを許可されていないことを知りました。なぜこれが私にはわからないのですが、数時間と大きな頭痛がします。以下のリンクを参照してください:
他のヒント
DataMember属性をTotalRecordsプロパティに追加してみてください
私はこれが古いことを知っていますが、このテーマを検索したときに現れ続けました。プロパティに「DatamemberTtribute」属性を追加することで、これを機能させることができました。以下はコードの例です。
public partial class SecurityItemCollection
{
[global::System.Runtime.Serialization.DataMemberAttribute()]
public int TotalRecords { get; set; }
}