寻找有关WCF服务的一些指导我正在进行原型设计。
我在IIS中托管了一个WCF服务,它将数据传递给我的客户端。我有一个单独的共享程序集,其中包含我的WCF项目中引用的所有业务对象。
我希望这些业务对象中的一些属性只读,因为我不希望我的客户能够在其客户端代码中更改这些字段。
我读到使用[DataContract]属性的装饰类强制执行正确的序列化以维护只读字段,但是当我实现它时,客户端中生成的代理类显示为可写。
是否有任何技巧可以实现这一目标?
谢谢!
/埃里克
答案 0 :(得分:1)
您可以使用常规属性,使用DataMember
属性标记它们,并将set访问器设为私有:
[DataMember]
public object IsFoo
{
get
{
return _isFoo;
}
private set { }
}
编辑:此外,要真正阻止您的类的用户设置该属性,您可以始终抛出InvalidOperation异常。
答案 1 :(得分:0)
根据我的经验,我发现WCF序列化程序只适用于非常简单的对象模型。如果您计划通过网络传递业务或域对象,则可能需要考虑在“传输”对象中创建支持。此对象将使您可以准确控制消费者正在接收的内容,并可以映射回您的域对象。