2009-12-08 61 views
0

我有一类与房产:WCF内部属性

[DataMember] 
public bool MyProp { get; internal set;} 

我注意到,当生成代理。即使我把它标记为内部属性(我认为它根本不会生成),该属性仍然可以设置。

有没有办法实现我正在尝试的?我希望能够从服务方面设置属性。但不允许客户端能够设置属性。

回答

0

WCF契约上的一个[DataMember]只是数据契约上的一个数据字段 - 一个XML模式.NET setter和getter visibility修饰符是在处理WCF消息时无关紧要,

如果您的字段具有[DataMember]属性,它将成为数据协定的XML模式的一部分,并且客户端无法知道它在服务器端具有“内部”设置器 - 它只是XSD数据的一部分合同。

.NET和WCF是两个非常不同的和独立的世界 - 当你的客户端调用WCF服务,这是一个基于SOAP的消息只有通过 - 有没有基于.NET的对象交互!你没有从客户端向服务器伸出头来调用服务器端对象的方法 - 在这种情况下,.NET可见性说明符会起作用。您的客户端创建一条消息并将其发送给服务器,服务器然后从该消息中重新组装(服务器端)对象 - 甚至还有一个基于SMTP(电子邮件!)的WCF传输!

双方共享的唯一契约是服务方法的服务/操作契约,以及传递数据的基于XML架构的数据契约。在XML模式中没有基于.NET的可视化规范的概念。

0

与服务合同,对DataContracts访问修饰符/数据成员没有起到任何作用,在本质上是毫无意义:(

0

没有一个get和set,你不能序列化和反序列化在WCF一跳。

你可以在你的服务的逻辑中实现你想要做的事