2009-09-25 2 views
1

У меня есть класс в службе WCF для представления набора недопустимых параметров,C# и WCF - SvcUtil не генерируя обертку правильно для строки []

[DataContract(Namespace = WebServiceNamespace.WsNamespace)] 
public class InvalidParameterFault : FaultBase 
{ 
    public override string GetReason() 
    { 
     return Resources.OneOrMoreParametersInvalid; 
    }      

    [DataMember] 
    public string[] InvalidParameters { get; set; }  

    public InvalidParameterFault() 
    {    
    }   
} 

(часть) договора определяется как,

[FaultContract(typeof(InvalidParameterFault))] 
[OperationContract]   
uint RegisterIndividual(RegisterIndividualPayload payload); 

Когда я добавляю ссылку на службу в свой тестовый проект, созданная оболочка выглядит как ниже (ничего похожего на исходное определение). Кто-нибудь знает, почему это ?????????

[System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")] 
    [System.SerializableAttribute()] 
    [System.Xml.Serialization.XmlSchemaProviderAttribute("ExportSchema")] 
    public partial class InvalidParameterFault : object, System.Xml.Serialization.IXmlSerializable, System.ComponentModel.INotifyPropertyChanged { 

     private System.Xml.XmlNode[] nodesField; 

     private static System.Xml.XmlQualifiedName typeName = new System.Xml.XmlQualifiedName("InvalidParameterFault", "http://schemas.facecode.com/webservices/2009/08/"); 

     public System.Xml.XmlNode[] Nodes { 
      get { 
       return this.nodesField; 
      } 
      set { 
       if ((object.ReferenceEquals(this.nodesField, value) != true)) { 
        this.nodesField = value; 
        this.RaisePropertyChanged("Nodes"); 
       } 
      } 
     } 

     public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 

     public void ReadXml(System.Xml.XmlReader reader) { 
      this.nodesField = System.Runtime.Serialization.XmlSerializableServices.ReadNodes(reader); 
     } 

     public void WriteXml(System.Xml.XmlWriter writer) { 
      System.Runtime.Serialization.XmlSerializableServices.WriteNodes(writer, this.Nodes); 
     } 

     public System.Xml.Schema.XmlSchema GetSchema() { 
      return null; 
     } 

     public static System.Xml.XmlQualifiedName ExportSchema(System.Xml.Schema.XmlSchemaSet schemas) { 
      System.Runtime.Serialization.XmlSerializableServices.AddDefaultSchema(schemas, typeName); 
      return typeName; 
     } 

     protected void RaisePropertyChanged(string propertyName) { 
      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 
      if ((propertyChanged != null)) { 
       propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
      } 
     } 
    } 

ответ

1

Предполагая, что вы используете Visual Studio, есть некоторые настройки в «Add Reference Service» -> «Дополнительно» диалог, который позволяет указать тип для сгенерированных коллекций. Это набор для генерации System.Array (по умолчанию, я думаю) или что-то еще?

Кроме того, этот частичный класс, по-видимому, не является результатом FaultBase. Возможно, вы выбрали «Добавить веб-ссылку» - убедить Visual Studio реализовать клиент веб-службы ASMX в классическом стиле вместо клиента WCF?