WCF上泛型的Getters和Setters

本文关键字:Setters Getters 泛型 WCF | 更新日期: 2023-09-27 18:29:58

如果我在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逻辑的最佳方法是什么?

WCF上泛型的Getters和Setters

您应该能够在生成客户端代码时通过在svcutil中指定程序集来共享程序集。通用方面应该无关紧要。

查看此链接以获取示例:http://www.codeproject.com/Articles/19625/Sharing-Types-Between-WCF-Service-and-Client

更新:您可能还想查看KnownTypes属性,告诉序列化程序它可以期望哪些泛型类型。