繁体   English   中英

WCF反序列化列表 <object> 作为对象[]

[英]WCF Deserializes List<object> as object[]

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

1-两个对象中任何一个的自定义构造函数在客户端中不可用

2-List <>可以在客户端作为数组供我使用,不允许我向其中添加任何内容以便以后将t传递回服务器

任何帮助将不胜感激

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;

集合(和列表)非常特定于.Net,WCF不会将其公开给服务的元数据。 WCF为收集提供了专用的封送处理规则。 集合将在服务元数据中作为数组公开。

如果使用的是AddServiceReference,请单击“高级”,然后选择“集合类型”并指定Generic.List。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM