WCF - 如何根据需要在OperationContract方法中设置字符串参数

时间:2017-10-04 10:21:46

标签: c# wcf

我根据规范我准备了WCF服务。它运作正常。我有一个方法,用[OperationContract]装饰,称为搜索。

看起来像这样(我已经更改了自定义类型名称,但这并不重要):

SearchResult Search(SearchCritery searchCritery, string connectionWith);

之后我得到了wsdl,这也没关系。但是,有一件事是错的:

<xs:element name="Search">
<xs:complexType>
    <xs:sequence>
        <xs:element type="q1:SearchCritery" name="searchCritery" nillable="true" minOccurs="0" xmlns:q1="someCustomSchema"/>
        <xs:element type="xs:string" name="connectionWith" nillable="true" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

正如您所看到的,两个输入参数都被标记为可为空而不是必需的。我该怎么做,改变我的代码,使它们成为必需而不是可空的。当然,如果他们不是我的代码,我会检查并返回相应的相关信息,但我必须在wsdl中显示。 另一件事是,我无法改变这种方法和params声明(类型等)

任何帮助都是有价值的。

已编辑:(已添加DataContract)

为问题目的简化归档名称

 [DataContract]
public class SearchCritery
{
    public SearchCritery()
    { }

    [Power(6)]
    [DataMember]
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
    public string FieldA { get; set; }

    [Power(5)]
    [DataMember]
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 1)]
    public string FieldB { get; set; }

    [Power(1)]
    [DataMember]
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 2)]
    public string FieldC { get; set; }

    [Power(5)]
    [DataMember]
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 3)]
    public string FieldD { get; set; }

}

如你所见,第二个参数 - 字符串,不是在Datacontract中,因为我不知道ho3要添加&#34;只有字符串&#34;作为数据合同成员。

0 个答案:

没有答案