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

それはうまくいきます。問題は、キャプチャされたパラメーターが{formatmat}と呼ばれ、タイプミスのためにキャプチャされないparameters.formatを渡すことです

functionは C# では有効なキーワードではないため、コードはコンパイルさえされないことを指摘しなければなりません。

お役に立てれば

于 2012-04-08T20:58:29.693 に答える