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;}
}
我需要发出 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;}
}