0

我正在研究 WCF 并希望控制我的服务的输出。这是我的课程:

[DataContract]
public class Authenticate
{
[DataMember(order=1)]
public int result;
[DataMember(order=0)]
Public string message;
}

[Operation Contract]
public interface IService1
{
Authenticate Login(string UName,string Password);
}

public class Service1:IService1
{
public Authenticate Login(string UName,string Password)
{
Authenticate result=new Authenticate();
if(UName=="mohit" && Password=="mohit")
{
result.result=1;
result.message="success";
}
else
{
result.result=0;
result.message="failure";

}
return result;
}
}

此方法的输出 XML(忽略元数据标签)是

<LoginResponse>
<LoginRsult>
<a:message>success</a:message>
<a:result>1</a:result>
</LoginRsult>
</LoginResponse>

我想要的输出是:

<authenticate>
<result>1</result>
<message>success</message>
</authenticate>

我尝试在 Datamember 中设置名称,但不起作用。

此外,无论我在数据成员中设置什么顺序,消息标签总是出现在结果之前(似乎按字母顺序排列)。

4

1 回答 1

1

在您的示例中,您明确设置了DataMembers 的顺序:

[DataContract]
public class Authenticate
{
    [DataMember(order=1)]
    public int result;
    [DataMember(order=0)]
    Public string message;
}

它按从最低到最高的顺序排列,因此您已将输出的顺序明确定义为实际发生的方式。如果您希望结果首先出现,然后消息第二个反转以下值order

[DataContract]
public class Authenticate
{
    [DataMember(order=0)]
    public int result;
    [DataMember(order=1)]
    Public string message;
}
于 2012-09-05T16:44:16.497 回答