请注意,在存储库列表之前还有额外的存储库和数据标记。我使用NexusRepo
类来建模repositories-item
,但收到此错误:
Exception caught: System.ApplicationException: Error retrieving response. Check inner details for more info. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at RestSharp.Deserializers.XmlDeserializer.HandleListDerivative(XElement root, String propName, Type type)
at RestSharp.Deserializers.XmlDeserializer.Deserialize[T](IRestResponse response)
at RestSharp.RestClient.Deserialize[T](IRestRequest request, IRestResponse raw)
--- End of inner exception stack trace ---
public List<NexusRepo> GetAllRepos()
{
RestRequest request = new RestRequest();
//RestRequest request = new RestRequest("/repositories", Method.GET);
request.Resource = "/repositories";
request.RootElement = "NexusRepo";
return this.restSharpAPI.Execute<List<NexusRepo>>(this.client, request);
}
public class NexusRepo
{
public string name { get; set; }
public string format { get; set; }
public string resourceURI { get; set; }
public override string ToString()
{
string s = "name=" + name + "format=" + format + "resourceURI=" + resourceURI;
return s;
}
}
答案 0 :(得分:0)
问题是NexusRepo
类名与repositories-item
节点名不同。您可以添加[DeserializeAs]
属性来解决它:
[DeserializeAs(Name = "repositories-item")]
public class NexusRepo
或者您可以重命名类或节点以满足以下条件之一:
在搜索匹配元素的数据时,使用默认XML 反序列化器将在下面查找元素和属性 顺序:
- 具有完全匹配名称的元素
- 名称与小写属性名称匹配的元素
- 名称与camel-cased属性名称匹配的元素
- 从名称
中删除了下划线和短划线的元素- 具有完全匹配名称的属性
- 名称与小写属性名称匹配的属性
- 名称与camel-cased属性名称相匹配的属性
- 从名称
中删除下划线和短划线的属性
如official docs中所述。
答案 1 :(得分:0)
它适用于我:
注释掉下面的RootElement行。
// request.RootElement =&#34; NexusRepo&#34;;