使用RestSharp返回简单的Guid

3
RestSharp无法反序列化纯Guid类型的响应。
[Route("User/BeginSession")]
[HttpGet]
public Guid BeginSession()
{
    return Guid.NewGuid();
}

这个测试失败了:

[Fact]
public void BeginSession_MadeAsARestRequest_Succeeds()
{
    var client = new RestClient("http://localhost/xyz");
    var request = new RestRequest("User/BeginSession");

    var a = client.Execute(request);

    var result = client.Execute<Guid>(request).Data;

    Assert.NotEqual(
        Guid.Parse("{00000000-0000-0000-0000-000000000000}"),
        result);
}

我需要用一个类来包装Guid,才能让它正常工作:

public class GuidResponse
{
    public Guid Guid { get; set; }
}

[Route("User/BeginSession2")]
[HttpGet]
public GuidResponse BeginSession2()
{
    return new GuidResponse
    {
        Guid = Guid.NewGuid()
    };
}

这个测试通过:

[Fact]
public void BeginSession2_MadeAsARestRequest_Succeeds()
{
    var client = new RestClient("http://localhost/xyz");
    var request = new RestRequest("User/BeginSession2");

    var result = client.Execute<GuidResponse>(request).Data;

    Assert.NotEqual(
        Guid.Parse("{00000000-0000-0000-0000-000000000000}"),
        result.Guid);
}

这是预期的行为吗?
1个回答

2

我猜这是因为仅返回GUID不是有效的JSON。它将作为字符串而不是JavaScript对象返回,例如{"id": "4bae9421-4fe0-4294-a659-9bc37388344b"}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接