WCF上的自定义类对象

时间:2011-02-05 14:18:28

标签: wcf

我在周末测试了一些东西,并且我制作了以下自定义对象。

  int Age;
  string HairColor;

为了时间的缘故,我没有在这里显示获取/设置代码,但在课堂上,它存在。该类在Winforms应用程序中运行良好。

现在我要做的是采用完全相同的类(驻留在DLL中)并允许WCF服务将其返回给客户端。

我该怎么做?我可以使用WCF服务引用DLL,还是需要做一些特别的事情?

2 个答案:

答案 0 :(得分:1)

如果要序列化该类以使其可用作WCF服务调用中的参数,则必须:

  • 要么使用WCF从.NET 3.5 SP1开始的“隐式”序列化 - 它的工作方式与XML序列化程序相同;所有公共属性都已序列化

或者如果您需要更多地控制序列化的内容:

  • 您需要使用[DataContract]属性(针对类级别)装饰您的类,并使用[DataMember]装饰您要序列化的每个项目(公共或不公开,属性或字段)属性

使用[DataContract] / [DataMember]属性进行显式修饰有一些明显的优点:

  • 您可以为序列化数据类定义XML命名空间
  • 您可以定义要序列化的字段和/或属性(公共或非公共)
  • 您可以在序列化中重命名属性,例如您可以在将从客户端发送到服务器的数据结构中为其指定另一个名称
  • 您可以控制字段和属性序列化的顺序
  • 您不需要为反序列化提供无参数构造函数

当然,没有免费的午餐 - 这意味着您必须去装饰您想要用作WCF方法参数和/或返回类型的所有类。

答案 1 :(得分:0)

为WCF public

创建一个[ServiceContract]
public Person{

    public int Age { get; set; }
    public string HairColor { get; set;}
}

然后应该自动序列化。