Restsharp - 由于 XElement 属性 而导致的异常

Restsharp - Exception due to XElement property

我需要发出 REST 请求并传递具有 属性 XElement 类型的对象。

对象:

public class Test
{
    public string Property1 {get;set;}
    public XElement PropertyXml {get;set;}
}

代码:

var testObj = new Test();
testObj.Property1 = "value";
testObj.PropertyXml = new XElement("test");
var level1 = new XElement("level1", "value111");
testObj.PropertyXml.Add(level1);

var client = new RestClient();

client.BaseUrl = new Uri(string.Format(_url));
var rRequest = new RestRequest(_address, Method.POST);
rRequest.RequestFormat = DataFormat.Json;
rRequest.AddBody(testObj);
var response = client.Execute(rRequest);

我在调用 AddBody 的那一行收到 'System.WhosebugException'。 PS 我可以使用 HttpClient(我使用 PostAsJsonAsync 方法)而不是 Restsharp 来传递测试对象。

如有任何想法,我们将不胜感激..

RestSharp 没有 XElement 的固有知识,并且 AddBody 将尝试像序列化任何其他 POCO 类型一样对其进行序列化 - 通过遍历其属性。你可以看到这个过程很容易陷入无限循环:

testObj.FirstNode.Parent.FirstNode.Parent....

最好的办法是将 PropertyXml 属性 的类型更改为 XML 结构可以轻松映射到的简单 POCO 类型。类似于:

public class PropertyStructure
{
    public string level1 {get;set;}
}

public class Test
{
    public string Property1 {get; set;}
    public PropertyStructure PropertyXml {get; set;}
}