【问题标题】:Need help in controlling data contract wcf在控制数据合约 wcf 方面需要帮助
【发布时间】:2012-09-05 16:39:06
【问题描述】:

我正在使用 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 中设置名称,但不起作用。

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

【问题讨论】:

    标签: .net wcf wcf-data-services


    【解决方案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;
    }
    

    【讨论】:

    • 感谢回复我想我也试过了,我还是会再试一次你对我的其他查询有什么想法吗,这是我最关心的问题
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2010-10-06
    • 2011-07-17
    相关资源
    最近更新 更多