我的WCF服务中有一个简单的类,它似乎没有正确显示访问我的WCF的客户端.
我的类有4个类型为string的公共属性.
我使用[DataContract()]标记了类,并使用[DataMember]标记了每个成员.
为什么我的构造函数不可见?构造函数是否有特殊的[属性]?
数据契约与构造函数没有任何关系.因此,当您在客户端上创建代理时,您将只获得实现数据协定的类.
如果要在客户端添加类似的构造函数(假设生成的类型名为SomeDataItem),则可以使用分部类添加它:
public partial class SomeDataItem { public SomeDataItem(int a, int b) { A = a; B = b; } }
同意您可以将部分类添加到WCF客户端应用程序 - 您还可以将[OnDeserializing]和[OnDeserialized]方法添加到服务器端类以处理初始化等.
当我在寻找如何解决这个问题时,找到了以下很好的例子 - http://social.msdn.microsoft.com/forums/en-US/wcf/thread/447149d5-b44c-47cd-a690-20928244b52b /
[DataContract] public class MyClassWithSpecialInitialization { ListmyList; string str1; [DataMember] public string Str1 { get { return str1; } set { this.myList.Add(value); str1 = value; } } string str2; [DataMember] public string Str2 { get { return str2; } set { this.myList.Add(value); str2 = value; } } public MyClassWithSpecialInitialization() { this.myList = new List (); } [OnDeserializing] public void OnDeserializing(StreamingContext context) { Console.WriteLine("Before deserializing the fields"); this.myList = new List (); } [OnDeserialized] public void OnDeserialized(StreamingContext context) { Console.WriteLine("After deserializing the fields... myList should be populated with the values of str1 and str2"); } }