Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF上泛型的getter和setter_C#_Wcf_Getter Setter - Fatal编程技术网

C# WCF上泛型的getter和setter

C# WCF上泛型的getter和setter,c#,wcf,getter-setter,C#,Wcf,Getter Setter,如果我在WCF服务中有一个泛型类 [DataContract(Name=“TestGenericOf{0}”)] 公共类TestGeneric { [数据成员] 公共字符串TestProperty { 获取{return _testProperty.ToUpper();} 设置{u testProperty=value;} } 私有字符串_testProperty; } 客户端(本例中为MVC)通过服务引用使用服务。我想在服务和客户机之间共享getter和setter逻辑;但是,由于类是泛型的

如果我在WCF服务中有一个泛型类

[DataContract(Name=“TestGenericOf{0}”)]
公共类TestGeneric
{
[数据成员]
公共字符串TestProperty
{
获取{return _testProperty.ToUpper();}
设置{u testProperty=value;}
}
私有字符串_testProperty;
}
客户端(本例中为MVC)通过服务引用使用服务。我想在服务和客户机之间共享getter和setter逻辑;但是,由于类是泛型的,因此在客户端上创建的类与在服务上创建的类不同

公共部分类TestGenericOfstring:object,System.Runtime.Serialization.IEExtensibleDataObject,System.ComponentModel.INotifyPropertyChanged{
[System.Runtime.Serialization.OptionalFieldAttribute()]
私有字符串TestPropertyField;
[System.Runtime.Serialization.DataMemberAttribute()]
公共字符串TestProperty{
得到{
返回this.TestPropertyField;
}
设置{
if((object.ReferenceEquals(this.TestPropertyField,value)!=true)){
this.TestPropertyField=值;
此.RaisePropertyChanged(“TestProperty”);
}
}
}
}

在服务和客户机上实现相同的getter、setter逻辑的最佳方法是什么?

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

检查此链接以获取示例:

更新:
您可能还希望查看KnownTypes属性,以告诉序列化程序可以使用哪些泛型类型

它只是一个数据契约,指定了一个契约,而不是明确的行为。对ToUpper()的调用不会出现在客户端(除非客户端有您的类)。不过,我相信对
ToUpper
的调用仍然会发生。当客户端调用web服务时,WS返回的数据将在代码中使用getter。除非调用WS并获取此对象,然后重复设置并获取该属性,否则不应该有任何问题。返回的初始对象应调用
ToUpper
。@RyanP非常正确,但我正在尝试在客户端中设置属性。我想,在客户端复制逻辑的最干净的方法是什么?正如Simon所说,客户端需要类。如果这些类是要共享的,而且看起来它们是共享的,那么您应该将这些类放在一个公共程序集中,并让客户端和服务器都引用它们。明白了。我遇到的问题是,由于该类是泛型的,当WCF服务序列化该类时,它会为使用的每个泛型创建类(TestGenericOfString),因此即使这些类是共享的,客户端也不会使用泛型类。很抱歉,我会更新我的问题。