无法让 RestSharp 将对象的参数发送到 Web api 控制器(始终为空)?

Cannot make RestSharp send parameter of object to web api controller (always null)?

我有一个像这样的简单控制器方法:

public IEnumerable<IEntity> GetEntities(ParamsModel args)
{
   //set break point here to examine the args
   return null;
}

这是我的 ParamsModel:

public class ParamsModel {
   public string Test;
}

这是我的客户发送获取请求的方法:

//_client here is an instance of RestClient
public async Task<IEnumerable<T>> GetEntitiesAsync()
{
   var request = new RestRequest("somePath");
   var o = new {                
            Test = "OK"
           };
   request.AddJsonBody(o);       
   return await _client.GetAsync<List<T>>(request);       
}

在 运行 方法 GetEntitiesAsync 之后,命中断点(在控制器的方法中)。但是 args 是空的,真的吗?

我也试过以下方法:

public async Task<IEnumerable<T>> GetEntitiesAsync()
{
   var request = new RestRequest("somePath");
   request.AddParameter("Test", "OK");
   return await _client.GetAsync<List<T>>(request);       
}

但是效果不佳(args 在控制器的方法中为空)。 如果我将控制器的方法更改为类似这样的方法(并使用上面的客户端代码),我可以在控制器的方法中看到字符串的单个简单参数的值已解析为 OK ("OK"):

public IEnumerable<IEntity> GetEntities(string Test)
{
   //here we can see that Test has value of "OK"
   return null;
}

我真的不明白我的代码有什么问题。 实际上我至少在一年前使用 RestSharp 但现在它似乎有一些新方法(例如我在代码中使用的 GetAsync ),就像我之前使用 ExecuteExecuteAsync.

你能发现这里有什么问题吗?谢谢!

PS:我正在使用 RestSharp 106.6.7

更新操作以使用 [FromUri]

明确说明在何处查找和绑定数据
public IHttpActionResult GetEntities([FromUri]ParamsModel args) {

    //...

    return Ok(entities);
}

To force Web API to read a complex type from the URI, add the [FromUri] attribute to the parameter.

引用Parameter Binding in ASP.NET Web API

AddParameter

的例子
public async Task<IEnumerable<T>> GetEntitiesAsync() {
   var request = new RestRequest("somePath");
   request.AddParameter("Test", "OK");
   return await _client.GetAsync<List<T>>(request);       
}

现在应该可以工作了。

注意模型应该使用属性而不是字段

public class ParamsModel {
   public string Test { get; set; }
}