c# - 如何在 Realm-dotnet 中存储 System.Collections.Generic.Dictionary

标签 c# uwp realm

我正在尝试将 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/

相关文章:

ios - 使用 List 属性的计数对 Realm 对象进行排序

c# - 尝试评估 bool 时出错?

c# - 如何让 C# 使用基于 css/svg 字体系列字符串的字体?

c++ - 样式的 Windows 应用程序 xaml 数据绑定(bind)

xaml - 如何在UWP中设置RatingControl星星的颜色?

ios - Realm - 订购元素?

c# - 处理对数据库的重复 linq 查询的正确做法应该是什么?

javascript - 从 MVC Web 应用程序的 MVC Controller 获取用户名的代码是什么

c# - 无法在跨 Windows 10 版本的 NavigationView 项目模板中实现相同的行为

swift - 执行添加主键的 Realm 迁移