2009-10-01 66 views
1

我在使用WCF服務中的屬性時遇到問題。我可以在界面定義屬性爲:.NET WCF服務中的屬性

[ServiceContract(Namespace = "http://some-url.com/")] 
interface ISomeInterface 
{ 
    [OperationContract] 
    int SomeMethod(string someArg); 

    int SomeProperty 
    { 
    [OperationContract] 
    get; 
    } 
} 

但是,當客戶端消耗,該屬性的基本方法get_SomeProperty()暴露,而不是作爲一個getter屬性。有沒有辦法告訴客戶將其視爲財產? (或者我是否必須放棄使用服務合同中的財產?)

+0

感謝所有的答案,這使得有很大的意義。 「否」是一個非常有用的答案。 :-) – dcw 2009-10-01 22:37:36

回答

3

在WCF中,您所能做的就是在客戶端和服務器之間發送消息。

客戶端從不具有對服務器對象的直接rpc式訪問 - 因此,您不能表面屬性或類似的東西。

你所能做的就是序列化消息並將它們發送給一個方法,其中[OperationContract]就在它們上面。我相信這不能應用於設定物業的方法。

Marc

4

世界上任何地方的SOAP Web服務都不支持屬性。沒有辦法在WSDL中描述屬性。 Web服務僅涉及操作(方法)。

1

Web Service不公開屬性。它只公開了它可以被客戶調用的方法(一個Web Service是無狀態的......所以具有屬性實際上沒有意義,因爲它們總是初始值)。

1

使用DataMember屬性。

[DataMember] 
int SomeProperty 
{ 
    get; 
} 

您必須確保您的對象是可序列化的。

這將創建爲對象的複雜類型,並添加元素,像這樣......

<xs:element minOccurs="0" name="SomeProperty" type="xs:int" /> 
+0

[http://www.w3.org/TR/wsdl#_types](http://www.w3.org/TR/wsdl#_types)描述Web服務使用的類型系統。 WCF在你的對象上使用'DataContract'和'DataMember'屬性支持這一點。 – 2013-05-13 21:06:39