我正在尝试将 Realm .NET 集成到我的 uwp 项目中,我想知道是否有任何方法可以在 Realm-dotnet 库中存储 System.Collections.Generic.Dictionary。 我试过这个:
public class Training : RealmObject
{
public int Id { get; set; }
public int Id_document { get; set; }
public IDictionary<string, string> Names { get; set;}
}
但我收到此错误:
错误 Fody/RealmWeaver:Training.Name 是尚不支持的“System.Collections.Generic.IDictionary`2”。
感谢您的提前,
最佳答案
基本请求
没有办法直接存储 System.Collections.Generic.Dictionary
进入 Realm 。
在Realm官网上您可以找到您正在搜索的所有信息,例如here您可以找到支持的数据类型的完整列表(还有集合)。
为了保存像 Dictionary
这样的结构的数据,您需要使用继承自 RealmObject
的自定义类有两个IList<T>
属性,例如:
public class RealmDictionary : RealmObject {
public IList<T> Keys { get; }
public IList<T> Values { get; }
}
您要在类(class)中存储 Dictionary
的位置,使用上面 RealmDictionary
的一个实例类:
...
public RealmDictionary Names { get; set; }
...
更新
(使用 NewtonsoftJson )
如果您必须将数据序列化为 Json 字符串,您可以将基类设置为:
...
[JsonIgnore]
public RealmDictionary RealmNames { get; set; }
public Dictionary<string,string> Names {
get {
return RealmNames.AsDictionary
}
}
...
然后添加到 RealmDictionary
类一个属性/方法,用值构造一个字典,大概是这样的..
public Dictionary<string,string> AsDictionary {
get {
Dictionary<string,string> temp = new Dictionary<>();
for(int i = 0; i < Keys.Count; i++){
temp.Add(Keys[i], Values[i]);
}
return temp;
}
}
关于c# - 如何在 Realm-dotnet 中存储 System.Collections.Generic.Dictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49150084/