【发布时间】:2023-04-07 14:37:01
【问题描述】:
我正在Xamarin Android 中开发应用程序。我有一个启动画面,我在其中序列化一个类并使用Intent 将其传递给MainActivity。当我尝试在 MainActivity 中反序列化它时,我收到一条错误消息:
"SerializationException unable to find constructor to use for types"
序列化:
void LoadData() {
Currency currency = new Currency(this);
intent = new Intent(this, typeof(MainActivity));
intent.PutExtra("currency", Newtonsoft.Json.JsonConvert.SerializeObject(currency));
StartActivity(intent);
}
反序列化:
cur = Newtonsoft.Json.JsonConvert.DeserializeObject<Currency> (Intent.GetStringExtra("currency")); // I get the error here
类构造函数:
public Currency(Context context) {
thiscontext = context;
}
在将参数Context context 添加到构造函数后,我开始遇到此问题。
这是什么原因造成的?我该如何解决?
是否可以序列化/反序列化具有参数的类?
【问题讨论】:
-
那么您希望反序列化传递给该构造函数的值是多少?你真的需要这个参数来反序列化吗?
-
AFAIK,Currency 类的默认 ctor 不存在,这就是您收到此错误的原因;如果你创建一个默认的ctor(不带参数),我相信你不会遇到这个问题
-
@JonSkeet 抱歉,我没听懂你的问题,你的意思是我的课堂上是否需要那个参数?
-
@rt2800 这是否意味着我不能序列化/反序列化有参数的类?
-
那么你是如何使用那个参数的?为什么需要上下文?
标签: c# android json xamarin deserialization