WCF OData System.Data.Services.Clientのシリアル化されるプロパティの名前を変更できますか。OData DataServiceContextのプロパティの名前を変更します。
私はメールボックスと呼ばれるクラスと、メールボックスとも呼ばれるプロパティを持っています。 このケースでは、Mailboxという名前はコンストラクタ用に予約されているため、これはC#では不可能です。 CSDLのためDataSvcUtil.exeでコードを生成する
ができます: error 0042: Name Mailbox cannot be used in type Mailbox. Member names cannot be the same as their enclosing type.
をだから私は、シリアル化のためのプロパティの名前を変更したいです。私はサーバ属性を試しましたが、どれも働いていませんでした。
[global::System.Data.Services.Common.DataServiceKeyAttribute("ID")]
public partial class Mailbox
{
[DataMember(Name = "Mailbox")]
[XmlElement(ElementName = "Mailbox")]
[JsonProperty(PropertyName = "Mailbox")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Services.Design", "1.0.0")]
public string MailBox
{
get
{
return this._mailbox;
}
set
{
this.OnsMailboxChanging(value);
this._mailbox = value;
this.OnsMailboxChanged()
}
}
private string _mailbox;
}
(自動生成コードではなく)クラス自体のコードを投稿できますか? '[DataMember(Name =" Mailbox2 ")]'などを使用して、シリアライゼーションに別の名前を付けることができるはずです。 – Tim
私はWebサービスを所有していないので、私は元のクラスを持っていません。私はCSDLを持っています:http://pastebin.com/6ascq9YY 次に、このコマンドを使ってクライアントに作成します。"%windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ DataSvcUtil.exe" /言語:CSharp /in:"%cd%/metadata.csdl "/ out:"%cd%/ metadata-auto-generated。 cs " 作成後、コンパイルエラーのためにプロパティの名前を変更する必要があります。しかし、私はwebserviceのためにそれを戻す名前を変更する必要があります。 – Thieme