1

扩展方法:

Response.AsJson
Response.AsXml

从承包商调用它时工作正常,例如:

public class TweetModule : NancyModule
    {
     public TweetModule()
            : base("/")
        {

            Post["/{action}.json/"] = parameters =>
            {
               return Reponse.Asjson(new {output:parameters.action}); // OK
            }
        }
     }   

但是当我从这样的函数中调用它时:

public class TweetModule : NancyModule
    {
     public TweetModule()
            : base("/")
        {

            Post["/{action}.{format}/"] = parameters =>
            {
               return GetResponse( parameters.action,parameters.format); // Error
            }
        }

        public Response GetResponse(string action,string format)
        {
           if (format == "json")
            return Response.AsJson(new {output:action}); // error
          else
            return Response.AsXml(new {output:action}); // error
        }


     }   

我得到这个例外:

<>f__AnonymousType0`1[System.String] 无法序列化,因为它没有无参数构造函数。

有什么建议吗?

4

1 回答 1

3

那工作得很好。问题是您捕获的参数称为{fortmat},然后您传递parameters.format由于拼写错误而从未捕获

而且我必须指出,您的代码甚至无法编译,因为函数在 C# 中不是有效的关键字,我只是假设您实际上是说它是公开的。

希望这可以帮助

于 2012-04-08T20:58:29.693 回答