我试图在我的uwp项目中集成Realm .NET,我想知道是否有任何方法可以在realm-dotnet base中存储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; }
}
在您的班级中,您要存储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;
}
}