WCF将List <object>反序列化为object [] </object>

时间:2014-02-28 23:31:00

标签: c# wcf serialization

我在这里遇到一些情况。我需要将具有属性的对象传递给WCF服务,该属性是另一个对象的List。两个对象都在WCF服务中定义。 我在这里遇到两个问题:

1-客户端

中无法使用这两个对象中的任何一个的自定义构造函数

2-列表&lt;&gt;我可以在客户端作为数组使用,不要让我添加任何内容以便以后传回服务器

非常感谢任何帮助

WCF代码:

[Serializable]
[DataContract]
public class PCParamResultEntity
{
    #region Properties
    [DataMember]
    public string SpecName { get; set; }
    [DataMember]
    public string SpecValue { get; set; }
    [DataMember]
    public string Grade { get; set; }
    #endregion

    #region Constructors        
    public PCParamResultEntity(string specName, string specValue, string grade)
    {
        SpecName = specName;
        SpecValue = specValue;
        Grade = grade;
    }
    #endregion
}
[Serializable]
[DataContract]
public class PCCheckResultEntity
{
    #region Properties
    [DataMember]
    public string GlobalResult { get; set; }
    [DataMember]
    public List<PCParamResultEntity> Results { get; set; }        
    #endregion

    #region Constructors        
    public PCCheckResultEntity(string globalResult, List<PCParamResultEntity> results)
    {
        GlobalResult = globalResult;
        Results = results;
    }
    #endregion


}

客户代码:

        PCCheckResultEntity result = new PCCheckResultEntity();
        result.GlobalResult = pcCheckresult.GlobalResult;

        foreach (PCParamResult param in pcCheckresult.Results)
        {
            string paramGrade = param.Grade;
            PCParamResultEntity resultEntity = new PCParamResultEntity();
            resultEntity.SpecName = param.SpecName;
            resultEntity.SpecValue = param.SpecValue;
            resultEntity.Grade = paramGrade;
            result.Results.????
        }
        return result;

1 个答案:

答案 0 :(得分:1)

Collection(和List)非常特定于.Net,WCF不会将其暴露给服务的元数据。 WCF为收集提供专用的编组规则。集合将作为服务元数据中的数组公开。

如果您使用AddServiceReference,请单击“高级”并选择“#34;集合类型&#34;并指定Generic.List。