类 FrozenObjectsExtensions
在 RealmObjectBase 之上的一组扩展方法。
命名空间: Realms
程序集:Realm.dll
语法
public static class FrozenObjectsExtensions
方法
| 编辑本页 查看源代码Freeze<TValue>(IDictionary<string, TValue>)
创建此字典的冻结快照。可以从任何线程读取冻结的副本。 如果字典不是托管的,则会抛出RealmException 。
冻结字典也会创建一个冻结的 Realm,它有自己的生命周期,但如果生成原始集合的活动 Realm 完全关闭(即 所有线程上的所有实例均已关闭),冻结的 Realm 和字典也将关闭。 可以正常读取和迭代冻结字典,但尝试以任何方式更改字典或尝试订阅通知都会抛出RealmFrozenException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置MaxNumberOfActiveVersions 。声明
public static IDictionary<string, TValue> Freeze<TValue>(this IDictionary<string, TValue> dictionary)
参数
类型 | 名称 | 说明 |
---|---|---|
IDictionary < string , TValue> | 字典 | 要为其创建冻结副本的字典。 |
返回:
类型 | 说明 |
---|---|
IDictionary < string , TValue> | 这本字典的冻结副本。 |
类型参数
名称 | 说明 |
---|---|
TValue | 存储在字典中的值的类型。 |
冻结<T>(IList<T>)
创建此列表的冻结快照。可以从任何线程读取和迭代冻结的副本。 如果该列表不是托管的,则会抛出RealmException异常。
冻结列表还会创建一个具有自己生命周期的冻结 Realm,但如果生成原始列表的活动 Realm 完全关闭(即 所有线程上的所有实例均已关闭),冻结的 Realm 和列表也将关闭。 可以正常读取和迭代冻结列表,但尝试以任何方式对其进行更改或尝试订阅通知都会抛出RealmFrozenException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置MaxNumberOfActiveVersions 。声明
public static IList<T> Freeze<T>(this IList<T> list)
参数
类型 | 名称 | 说明 |
---|---|---|
IList <T> | 名单 | 要创建冻结副本的列表。 |
返回:
类型 | 说明 |
---|---|
IList <T> | 此列表的冻结副本。 |
类型参数
名称 | 说明 |
---|---|
t | 列表中元素的类型。 |
冻结<T>(ISet<T>)
创建该集合的冻结快照。 可以从任何线程读取冻结的副本。 如果该集合不是托管的,则会抛出RealmException异常。
冻结集合也会创建一个冻结的 Realm,它有自己的生命周期,但如果生成原始集合的活动 Realm 完全关闭(即 所有线程上的所有实例都将关闭),冻结的 Realm 和集合也将关闭。 可以正常读取和迭代冻结集,但尝试以任何方式对其进行更改或尝试订阅通知都会抛出RealmFrozenException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置MaxNumberOfActiveVersions 。声明
public static ISet<T> Freeze<T>(this ISet<T> set)
参数
类型 | 名称 | 说明 |
---|---|---|
ISet <T> | 集 | 要创建其冻结副本的集。 |
返回:
类型 | 说明 |
---|---|
ISet <T> | 该集合的冻结副本。 |
类型参数
名称 | 说明 |
---|---|
t | 集合中元素的类型。 |
冻结<T>(IQueryable<T>)
创建此查询的冻结快照。可以从任何线程读取和查询冻结的副本。 如果查询不是托管的(即 不是All<T>()调用的结果),则会抛出RealmException 。
冻结查询还会创建一个具有自己生命周期的冻结 Realm,但如果生成原始查询的活动 Realm 完全关闭(即 所有线程上的所有实例均已关闭),冻结的 Realm 和查询也将关闭。 可以正常读取和迭代冻结的查询,但尝试以任何方式对其进行更改或尝试订阅通知都会抛出RealmFrozenException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置MaxNumberOfActiveVersions 。声明
public static IQueryable<T> Freeze<T>(this IQueryable<T> query) where T : IRealmObjectBase
参数
类型 | 名称 | 说明 |
---|---|---|
IQueryable <T> | 查询 | 要创建冻结副本的查询。 |
返回:
类型 | 说明 |
---|---|
IQueryable <T> | 此查询的冻结副本。 |
类型参数
名称 | 说明 |
---|---|
t | 查询中元素的类型。 |
冻结<T>(T)
返回此对象的冻结快照。可以从任何线程读取和查询冻结的副本,而不会引发异常。
冻结 RealmObjectBase 还会创建一个冻结的 Realm,它有自己的生命周期,但如果生成原始对象的活动 Realm 完全关闭(即 所有线程上的所有实例均已关闭),冻结的 Realm 和对象也将关闭。 可以像往常一样查询冻结对象,但尝试以任何方式对其进行更改或尝试订阅通知都会抛出RealmFrozenException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置MaxNumberOfActiveVersions 。声明
public static T Freeze<T>(this T realmObj) where T : IRealmObjectBase
参数
类型 | 名称 | 说明 |
---|---|---|
t | realmObj | 要创建其冻结版本的IRealmObject 、 IEmbeddedObject或IAsymmetricObject实例。 |
返回:
类型 | 说明 |
---|---|
t | 传入对象的新冻结实例,如果对象已被冻结,则为对象本身。 |
类型参数
名称 | 说明 |
---|---|
t |