我已将Xamarin本机UI用于Android应用程序,并使用Newtonsoft.Json
为API调用和数据创建了不同的类库。反序列化api数据。
该类库的目标框架为.NET Standar 2.0
。
由于我已将该引用添加到控制台应用程序中,因此它可以正常工作,但我在Android项目中添加了它的抛出错误。
**Error Details**
Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute.
根据错误消息,我已将属性JsonConstructor
用于类的默认构造函数。
示例:
public class TestClass
{
[JsonConstructor]
public TestClass()
{
}
}
答案 0 :(得分:2)
其中需要PreserveAttribute作为Mono.Android.dll或'Xamarin.iOS.dll'的引用,但是这两个类的共同点是我的类库是通用的
在您的类库中添加一个PreserveAttribute
类,并使用该属性,因为Mono Linker仅使用属性的“名称”,而不使用名称空间/类名...
public sealed class PreserveAttribute : Attribute
{
public bool AllMembers;
public bool Conditional;
public PreserveAttribute (bool allMembers, bool conditional)
{
AllMembers = allMembers;
Conditional = conditional;
}
public PreserveAttribute ()
{
}
}
然后在JSON模型/类上使用该属性:
[Preserve(AllMembers = true)]
public class TestClass
{
~~~
答案 1 :(得分:1)
尝试在班级顶部使用PreserveAttribute
[PreserveAttribute(AllMembers = true)]
public class TestClass
{
public TestClass() {}
}
在类库中再添加一个类PreserveAttribute
public sealed class PreserveAttribute : System.Attribute
{
public bool AllMembers;
public bool Conditional;
}
修改 链接-SDK和用户程序集
跳过链接程序集-Newtonsoft.Json;
在跳过链接程序集选项中添加Newtonsoft.Json