C# WCF反序列化列表<;对象>;作为对象[]

C# WCF反序列化列表<;对象>;作为对象[],c#,wcf,serialization,C#,Wcf,Serialization,我这里有点麻烦。我需要向WCF服务传递一个对象,该对象的属性是另一个对象的列表。这两个对象都是在WCF服务中定义的。 我这里有两个问题: 1-两个对象中任何一个的自定义构造函数在客户端中都不可用 2-该列表在客户端作为数组提供给我,不允许我添加任何内容以稍后将t传递回服务器 任何帮助都将不胜感激 WCF代码: [Serializable] [DataContract] public class PCParamResultEntity { #region Properties [D

我这里有点麻烦。我需要向WCF服务传递一个对象,该对象的属性是另一个对象的列表。这两个对象都是在WCF服务中定义的。 我这里有两个问题:

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

2-该列表在客户端作为数组提供给我,不允许我添加任何内容以稍后将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


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

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

        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;