1

我有一个 WCF 网络服务,它公开了这些类:

  [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个班。DynAttribute 具有 2 个字符串属性和 TemplatesFormat,其属性是 DynAttribute 类的列表。到现在为止还挺好。

但是,当我从 ASP.NET 网页引用 Web 服务并尝试使用 TemplatesFormat 时,我看不到 List 属性。

我的意思是,我实际上“看到”了它,但它不是一个列表(不包含“Add()”),我不知道如何使用它。

我认为我缺少与 de [DataContrat] 相关的内容以及它是自定义类型的事实,因为 DynAttribute 类没有相同的问题(我看到 Key 和 Value 属性,因为它们是字符串)但是,我无法将它用于列表...

任何的想法???

4

2 回答 2

1

WCF 旨在支持许多其他平台的消费。因为List<DynAttribute>不是原始类型,所以很可能将其转换为DynAttribute[].

在您的消费应用程序中。尝试使用您的变量,看看是否可以.ToList()将其变回List<DynAttribute>您期望的值。

于 2012-12-21T21:56:30.893 回答
1

添加对 wcf 服务的引用时,您需要将 Collection Type 更改为 Generic List。请参阅我的帖子wcf-proxy-returning-array-instead-of-list-even-though-collection-type-generic了解更多详细信息和截图。

于 2012-12-21T22:01:56.783 回答