文章出處

應用場景:使用 WCF 有一個壞處,就是如果我們經常對 WCF 應用程序更新,有時候調用方也要進行 Update Service,但調用方往往會很多,那么這個工作就會很討厭,比如 WCF Service 返回的實體類型更改了,這時候不更新調用方就會報錯,怎么解決這個問題?

原始 ProductDTO:

namespace Sample.App.Application.DTO
{
    [Serializable]
    [DataContract]
    public class ProductDTO
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Size { get; set; }
    }
}

更改后的 ProductDTO:

namespace Sample.App.Application.DTOs
{
    [Serializable]
    [DataContract]
    public class ProductDTO
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Size { get; set; }
        public string Remark { get; set; }
    }
}

兩個更改:

  • 命名空間 Sample.App.Application.DTO 改為 Sample.App.Application.DTOs。
  • 增加 Remark,但是不想暴露給調用方。

如果我們不更新調用方,這時候將獲取不到 ProductDTO,但不會報錯。

解決方式:

namespace Sample.App.Application.DTOs
{
    [Serializable]
    [DataContract(Namespace = "http://schemas.datacontract.org/2004/07/Sample.App.Application.DTO")]
    public class ProductDTO
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Size { get; set; }
        [IgnoreDataMember]
        public string Remark { get; set; }
    }
}

注:

  • DataContract - Namespace:自定義類型命名空間,和調用方保持一致。
  • IgnoreDataMember:忽略屬性映射。

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()