2

私はこのコードを持っています:

public IHttpActionResult Get([FromUri]GetFilesRequest request)

request がnullの場合、新しいGetFilesRequestを作成します。これは、コンストラクターでクラスのデフォルトのパラメーターを作成するためにこれを行ったためです。

public GetFilesRequest()
    {
        Sort = "latest";
        Filter = "";
    }

だから私は考えています:

public IHttpActionResult Get([FromUri]GetFilesRequest request = new GetFilesRequest)

しかし、私はこの警告を受けています:

'request' is of type 'GetFilesRequest'. A default parameter value of a reference type other than string can only be initialized with null.
4

3 に答える 3

6

いいえ - デフォルト値はコンパイル時の定数でなければなりません。代わりにオーバーロードを使用できますか?

public IHttpActionResult Get()
{
     return Get(new GetFilesRequest());
}
于 2014-05-20T21:25:13.750 に答える
4

コンパイラが作成できる定数値のみを使用できます。あなたが持っているものはランタイムオブジェクトの割り当てを必要とするので、コンパイラが不平を言っているのです。このようなことを試してください。

public IHttpActionResult Get([FromUri]GetFilesRequest request = null) {
    request = request ?? new GetFilesRequest();
}
于 2014-05-20T21:24:47.383 に答える
2

エラーが示すように、これはパラメーターとして使用できません。ただし、コードをそのように再構築できます

public IHttpActionResult Get([FromUri]GetFilesRequest request = null)
{
   if (request == null) request = new GetFilesRequest();

   // TODO : Remaining method body
}
于 2014-05-20T21:24:59.027 に答える