在OData DataServiceContext中重命名属性

时间:2016-10-25 15:16:54

标签: wcf serialization odata

是否可以重命名将为WCF OData System.Data.Services.Client序列化的属性?

我有一个名为Mailbox的类和一个名为Mailbox的属性。 这在C#中是不可能的,因为在这种情况下,名称Mailbox是为构造函数保留的。

使用DataSvcUtil.exe为csdl生成代码,提供: 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;
}

1 个答案:

答案 0 :(得分:0)

我通过将代码移动到Visual Basic找到了一种解决方法,因为在VB中允许它具有属性和具有相同名称的类。我不喜欢这个解决方案,但至少我可以继续编码。