none
WCF如何返回多个json值? RRS feed

  • 问题

  • 我最近尝试在RESTful WCF中返回多个json结果

     [WebInvoke(Method = "POST", UriTemplate="Test",

    RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]       

    string Test(int n1, int n2, out int o1, out int o2);

    这种写法在.NET里没问题,但是在MONO里不能通过,会抛出异常

    请问还有没其他什么方法,能返回多个值的?谢谢~

    2013年8月7日 9:34

答案

  • 这不是一个好的定义契约的方式。你可以尝试这么做:

    class TestResponse

    {

      public string Value;

    public int o1;

    public int o2;

    }


    TestResponse Test(int n1, int n2);

    • 已编辑 Skyseer 2013年8月7日 9:39
    • 已建议为答案 Learning hard 2013年8月7日 15:04
    • 已标记为答案 Alex D'oh 2013年8月8日 2:12
    2013年8月7日 9:39

全部回复

  • 这不是一个好的定义契约的方式。你可以尝试这么做:

    class TestResponse

    {

      public string Value;

    public int o1;

    public int o2;

    }


    TestResponse Test(int n1, int n2);

    • 已编辑 Skyseer 2013年8月7日 9:39
    • 已建议为答案 Learning hard 2013年8月7日 15:04
    • 已标记为答案 Alex D'oh 2013年8月8日 2:12
    2013年8月7日 9:39
  • 谢谢回复~

    这么做理论上是可行的 但因为我举例的关系没有表达清楚:p

    实际情况会复杂些

    返回的类型会是一个 List<ClassA>和 一个ClassB

    而且二者逻辑上不在一起,没有父子/继承关系 

    所以单独做一个结果类Class C{ List<ClassA> As; ClssB b;}的话好像又有些小题大作了……

    不过你说的方法确实是很灵活的技巧,谢谢!

    2013年8月7日 14:06
  • 谢谢回复~

    这么做理论上是可行的 但因为我举例的关系没有表达清楚:p

    实际情况会复杂些

    返回的类型会是一个 List<ClassA>和 一个ClassB

    而且二者逻辑上不在一起,没有父子/继承关系 

    所以单独做一个结果类Class C{ List<ClassA> As; ClssB b;}的话好像又有些小题大作了……

    不过你说的方法确实是很灵活的技巧,谢谢!

    千万不要认为这是“技巧”,这是最佳实践,参见:Web Service Software Factory 。

    或者你可以去翻翻 Windows 的 API,或 stl 库,你看看有多少方法的申明会有多个传出参数。

    2013年8月8日 1:58