2012-04-02 111 views
0

泛型如果我在一個WCF服務getter和setter方法在WCF

[DataContract(Name = "TestGenericOf{0}")] 
public class TestGeneric<T> 
{ 
    [DataMember] 
    public string TestProperty 
    { 
     get { return _testProperty.ToUpper(); } 
     set { _testProperty = value; } 
    } 

    private string _testProperty; 
} 

和客戶端(MVC在這種情況下)有一個通用的消費類通過服務引用服務。我想分享服務和客戶端之間的getter和setter邏輯;然而,由於該類是通用的,所以在客戶端創建的類與服務上的類不同。

public partial class TestGenericOfstring : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { 

    [System.Runtime.Serialization.OptionalFieldAttribute()] 
    private string TestPropertyField; 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public string TestProperty { 
     get { 
      return this.TestPropertyField; 
     } 
     set { 
      if ((object.ReferenceEquals(this.TestPropertyField, value) != true)) { 
       this.TestPropertyField = value; 
       this.RaisePropertyChanged("TestProperty"); 
      } 
     } 
    } 
} 

要在服務和客戶端上實現相同的getter,setter邏輯,最好的方法是什麼?

+5

這只是一個指定合同的數據合同,而不是明確的行爲。對ToUpper()的調用不會出現在客戶端(除非客戶端有你的類)。 – sisve 2012-04-02 22:25:10

+0

我相信對'ToUpper'的調用仍然會發生。當你的客戶調用Web服務時,WS返回的數據將在你的代碼中使用getter。除非你調用WS並獲取這個對象,然後重複設置並獲取該屬性,否則不應該有任何問題。返回的初始對象應該有'ToUpper'調用。 – 2012-04-02 22:27:44

+0

@RyanP非常真實,但我試圖在客戶端設置屬性。我猜,最簡潔的方法是重複客戶端的邏輯? – user654616 2012-04-02 22:33:22

回答