引用Newtonsoft.Json.Linq后提示必须在 Newtonsoft.Json.Linq.JObject 上实现默认访问器,因为它继承自 ICollection
时间: 2023-12-06 07:24:34 浏览: 79
这个问题一般是因为您在使用 Newtonsoft.Json.Linq.JObject 类时,没有实现默认访问器所导致的。这是由于 Newtonsoft.Json.Linq.JObject 类实现了 ICollection 接口,而 ICollection 接口要求实现默认访问器,否则会抛出该异常。
您可以通过以下方式实现默认访问器来解决该问题:
```csharp
public class MyJObject : Newtonsoft.Json.Linq.JObject
{
public override bool TryGetMember(Newtonsoft.Json.Linq.GetMemberBinder binder, out object result)
{
if (base.TryGetMember(binder, out result))
{
return true;
}
else
{
// 实现您的默认访问器逻辑
// ...
result = null; // 如果找不到,返回 null
return true; // 返回 true 表示成功找到成员
}
}
public override bool TrySetMember(Newtonsoft.Json.Linq.SetMemberBinder binder, object value)
{
// 实现您的成员设置逻辑
// ...
// 调用基类实现
return base.TrySetMember(binder, value);
}
}
```
然后您就可以使用 MyJObject 类来代替 Newtonsoft.Json.Linq.JObject 类,从而实现您的需求。同时,这种方式也可以避免直接修改 Newtonsoft.Json 的源代码,确保代码的可维护性和兼容性。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)