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

回答