2012-12-21 107 views
1

我有一個WCF web服務,暴露出這些類:WCF DataContract與自定義列表屬性

[DataContract] 
    public class TemplatesFormat 
    {   
     List<DynAttribute> _dynsattributes = new List<DynAttribute>(); 

     [DataMember] 
     public List<DynAttribute> DynsAttributes 
     { 
      get { return _dynsattributes; } 
      set { _dynsattributes = value; } 
     } 
    } 

    [DataContract] 
    public class DynAttribute 
    { 
     string _key = ""; 
     string _val = ""; 
     [DataMember] 
     public string Key 
     { 
      get { return _key; } 
      set { _key = value; } 
     } 
     [DataMember] 
     public string Value 
     { 
      get { return _val; } 
      set { _val = value; } 
     } 
    } 

基本上,2班。具有2個字符串屬性和TemplatesFormat的DynAttribute,其屬性是DynAttribute類的List。 到目前爲止,這麼好。

但是,當我從ASP.NET網頁引用Web服務並嘗試使用TemplatesFormat時,我看不到List屬性。

我的意思是,我實際上「看到」它,但它不是一個列表(不包含「添加()」),我不知道如何使用它。

我想我錯過了與[DataContrat]相關的事情,以及它是自定義類型,因爲我沒有與DynAttribute類相同的問題(我看到Key和Value屬性,因爲它們是字符串),但是,我不能正確的列表...

任何想法???

回答

1

WCF旨在支持許多其他平臺的消費。因爲List<DynAttribute>不是原始類型,所以它可能會將其轉換爲DynAttribute[]

在您的消費應用程序中。嘗試考慮你的變量,看看你是否可以將它變回List<DynAttribute>你期望的。

+0

有沒有辦法告訴它也序列化該List 呢? – mRt

+0

@Jeffery Khan這是不正確的,你可以有List 沒有任何問題 –

+0

我個人更喜歡把它們留作數組,但是對於你要找的東西,它看起來像是客戶端,你需要反序列化到'列表'。看看下面Gregor的答案。 – Khan