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 (Metadata タグを無視) は次のとおりです。

<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;
}

最低から最高の順に進むため、出力の順序を実際に発生する方法として具体的に定義しました。結果を最初に送り、メッセージを 2 番目にしたい場合は、 の値を逆にしますorder

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