Struct Realm.Dynamic
为Realm实例公开动态 API 的类。
继承成员
命名空间: Realms
程序集:Realm.dll
语法
[Preserve(AllMembers = true)]
public readonly struct Realm.Dynamic
方法
| 编辑本页 查看源代码AddEmbeddedObjectToDictionary(对象, string)
创建嵌入式对象并将其添加到指定字典中。 这还会为新创建的嵌入式对象分配正确的所有权。
声明
public IEmbeddedObject AddEmbeddedObjectToDictionary(object dictionary, string key)
参数
类型 | 名称 | 说明 |
---|---|---|
对象 | 字典 | 将添加对象的字典。 |
字符串 | key | 将为其添加对象的键。 |
返回:
类型 | 说明 |
---|---|
IEmbeddedObject | 将新创建的对象添加到字典后。 |
备注
包含嵌入式对象的字典无法直接添加对象,因为这需要构造一个无主的嵌入式对象,而这是不可能的。 这就是为什么必须使用 AddEmbeddedObjectToDictionary(object, string)和SetEmbeddedObjectInDictionary(object, string)而不是Add(TKey, TValue)和this[TKey]的原因。
另请参阅
| 编辑本页 查看源代码AddEmbeddedObjectToList(对象)
创建嵌入式对象并将其添加到指定列表。 这还会为新创建的嵌入式对象分配正确的所有权。
声明
public IEmbeddedObject AddEmbeddedObjectToList(object list)
参数
类型 | 名称 | 说明 |
---|---|---|
对象 | 名单 | 要添加对象的列表。 |
返回:
类型 | 说明 |
---|---|
IEmbeddedObject | 新创建的对象(已添加到列表末尾)。 |
备注
另请参阅
| 编辑本页 查看源代码全部(字符串)
获取特定类型的所有对象的视图。
声明
public IQueryable<IRealmObject> All(string className)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 模式中定义的对象类型。 |
返回:
类型 | 说明 |
---|---|
IQueryable < IRealmObject > | 一个可查询的collection,无需进一步筛选,即可迭代此域中className的所有对象。 |
备注
由于视图内的对象是动态访问的,因此无法使用 LINQ 或其他表达式谓词对视图进行查询。
CreateEmbeddedObjectForProperty(IRalmObjectBase, string)
Realm 中托管嵌入式对象的工厂。 仅在写事务中有效。 嵌入式对象需要立即拥有,因此只能为特定属性创建嵌入式对象。
声明
public IEmbeddedObject CreateEmbeddedObjectForProperty(IRealmObjectBase parent, string propertyName)
参数
类型 | 名称 | 说明 |
---|---|---|
IRealmObjectBase | 父项 | 将拥有新创建的嵌入式对象的父IRealmObject或IEmbeddedObject 。 |
字符串 | 属性名称 | 将分配新创建的嵌入式对象的属性。 |
返回:
类型 | 说明 |
---|---|
IEmbeddedObject | 动态访问的嵌入式对象。 |
CreateObject(string)
Realm 中没有主键的托管对象的工厂。 仅在写事务中有效。
声明
public IRealmObjectBase CreateObject(string className)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 模式中定义的要创建的对象类型。 |
返回:
类型 | 说明 |
---|---|
IRealmObjectBase | 动态访问的 Realm 对象。 |
备注
如果 Realm 实例是从无类型模式创建的(例如从旧版本的 Realm 迁移时),则返回的对象将是纯动态的。 如果 域 是从类型化模式创建的(这是调用GetInstance(RealmConfigurationBase?)时的默认情况),则返回的对象将是用户定义类的实例。
异常
类型 | 条件 |
---|---|
RealmInvalidTransactionException | |
ArgumentException | 如果对已定义主键的对象使用此方法。 |
CreateObject(string, ObjectId?)
Realm 中具有主键的托管对象的工厂。 仅在写事务中有效。
声明
public IRealmObjectBase CreateObject(string className, ObjectId? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 模式中定义的要创建的对象类型。 |
ObjectId ? | 主键 | 要创建的对象的主键。 |
返回:
类型 | 说明 |
---|---|
IRealmObjectBase | 动态访问的 Realm 对象。 |
备注
如果 Realm 实例是从无类型模式创建的(例如从旧版本的 Realm 迁移时),则返回的对象将是纯动态的。 如果 域 是从类型化模式创建的(这是调用GetInstance(RealmConfigurationBase?)时的默认情况),则返回的对象将是用户定义类的实例。
异常
类型 | 条件 |
---|---|
RealmInvalidTransactionException | |
ArgumentException | 如果 |
CreateObject(string, Guid?)
Realm 中具有主键的托管对象的工厂。 仅在写事务中有效。
声明
public IRealmObjectBase CreateObject(string className, Guid? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 模式中定义的要创建的对象类型。 |
指南? | 主键 | 要创建的对象的主键。 |
返回:
类型 | 说明 |
---|---|
IRealmObjectBase | 动态访问的 Realm 对象。 |
备注
如果 Realm 实例是从无类型模式创建的(例如从旧版本的 Realm 迁移时),则返回的对象将是纯动态的。 如果 域 是从类型化模式创建的(这是调用GetInstance(RealmConfigurationBase?)时的默认情况),则返回的对象将是用户定义类的实例。
异常
类型 | 条件 |
---|---|
RealmInvalidTransactionException | |
ArgumentException | 如果 |
CreateObject(string, long?)
Realm 中具有主键的托管对象的工厂。 仅在写事务中有效。
声明
public IRealmObjectBase CreateObject(string className, long? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 模式中定义的要创建的对象类型。 |
long ? | 主键 | 要创建的对象的主键。 |
返回:
类型 | 说明 |
---|---|
IRealmObjectBase | 动态访问的 Realm 对象。 |
备注
如果 Realm 实例是从无类型模式创建的(例如从旧版本的 Realm 迁移时),则返回的对象将是纯动态的。 如果 域 是从类型化模式创建的(这是调用GetInstance(RealmConfigurationBase?)时的默认情况),则返回的对象将是用户定义类的实例。
异常
类型 | 条件 |
---|---|
RealmInvalidTransactionException | |
ArgumentException | 如果 |
CreateObject(string, string?)
Realm 中具有主键的托管对象的工厂。 仅在写事务中有效。
声明
public IRealmObjectBase CreateObject(string className, string? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 模式中定义的要创建的对象类型。 |
字符串 | 主键 | 要创建的对象的主键。 |
返回:
类型 | 说明 |
---|---|
IRealmObjectBase | 动态访问的 Realm 对象。 |
备注
如果 Realm 实例是从无类型模式创建的(例如从旧版本的 Realm 迁移时),则返回的对象将是纯动态的。 如果 域 是从类型化模式创建的(这是调用GetInstance(RealmConfigurationBase?)时的默认情况),则返回的对象将是用户定义类的实例。
异常
类型 | 条件 |
---|---|
RealmInvalidTransactionException | |
ArgumentException | 如果 |
Find(string, ObjectId?)
从具有 PrimaryKey 属性的类中快速查找对象以供动态使用。
声明
public IRealmObject? Find(string className, ObjectId? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 动态情况下的类名称。 |
ObjectId ? | 主键 | 主键完全匹配,与 == 搜索相同。 |
返回:
类型 | 说明 |
---|---|
IRealmObject |
|
异常
类型 | 条件 |
---|---|
RealmClassLacksPrimaryKeyException | 如果IRealmObject类 T 缺少PrimaryKeyAttribute 。 |
Find(string, Guid?)
从具有 PrimaryKey 属性的类中快速查找对象以供动态使用。
声明
public IRealmObject? Find(string className, Guid? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 动态情况下的类名称。 |
指南? | 主键 | 主键完全匹配,与 == 搜索相同。 |
返回:
类型 | 说明 |
---|---|
IRealmObject |
|
异常
类型 | 条件 |
---|---|
RealmClassLacksPrimaryKeyException | 如果IRealmObject类 T 缺少PrimaryKeyAttribute 。 |
Find(string, long?)
从具有 PrimaryKey 属性的类中快速查找对象以供动态使用。
声明
public IRealmObject? Find(string className, long? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 动态情况下的类名称。 |
long ? | 主键 | 主键完全匹配,与 == 搜索相同。 类型为 |
返回:
类型 | 说明 |
---|---|
IRealmObject |
|
异常
类型 | 条件 |
---|---|
RealmClassLacksPrimaryKeyException | 如果IRealmObject类 T 缺少PrimaryKeyAttribute 。 |
Find(string, string?)
从具有 PrimaryKey 属性的类中快速查找对象以供动态使用。
声明
public IRealmObject? Find(string className, string? primaryKey)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 动态情况下的类名称。 |
字符串 | 主键 | 主键完全匹配,与 == 搜索相同。 |
返回:
类型 | 说明 |
---|---|
IRealmObject |
|
异常
类型 | 条件 |
---|---|
RealmClassLacksPrimaryKeyException | 如果IRealmObject类 T 缺少PrimaryKeyAttribute 。 |
InsertEmbeddedObjectInList(对象, int)
创建嵌入式对象,并将其插入指定列表中的指定索引处。 这还会为新创建的嵌入式对象分配正确的所有权。
声明
public IEmbeddedObject InsertEmbeddedObjectInList(object list, int index)
参数
类型 | 名称 | 说明 |
---|---|---|
对象 | 名单 | 将插入对象的列表。 |
int | 索引(index) | 将插入对象的索引。 |
返回:
类型 | 说明 |
---|---|
IEmbeddedObject | 新创建的对象(插入到列表后)。 |
备注
另请参阅
| 编辑本页 查看源代码RemoveAll(string)
从 Realm 中删除某一类型的所有对象。
声明
public void RemoveAll(string className)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 模式中定义的要删除的对象的类型。 |
异常
类型 | 条件 |
---|---|
RealmInvalidTransactionException | |
ArgumentException | 如果您传递的 |
SetEmbeddedObjectInDictionary(对象, string)
创建嵌入式对象,并将其设置在指定字典中的指定键。 这还会为新创建的嵌入式对象分配正确的所有权。
声明
public IEmbeddedObject SetEmbeddedObjectInDictionary(object dictionary, string key)
参数
类型 | 名称 | 说明 |
---|---|---|
对象 | 字典 | 将在其中设置对象的字典。 |
字符串 | key | 将为其设置对象的键。 |
返回:
类型 | 说明 |
---|---|
IEmbeddedObject | 将新创建的对象分配给字典中的指定键后。 |
备注
包含嵌入式对象的字典无法直接添加对象,因为这需要构造一个无主的嵌入式对象,而这是不可能的。 这就是为什么必须使用 AddEmbeddedObjectToDictionary(object, string)和SetEmbeddedObjectInDictionary(object, string)而不是Add(TKey, TValue)和this[TKey]的原因。
另请参阅
| 编辑本页 查看源代码SetEmbeddedObjectInList(对象, int)
创建嵌入式对象,并将其设置在指定列表中的指定索引处。 这还会为新创建的嵌入式对象分配正确的所有权。
声明
public IEmbeddedObject SetEmbeddedObjectInList(object list, int index)
参数
类型 | 名称 | 说明 |
---|---|---|
对象 | 名单 | 将在其中设置对象的列表。 |
int | 索引(index) | 将设置对象的索引。 |
返回:
类型 | 说明 |
---|---|
IEmbeddedObject | 将新创建的对象设置为列表中的指定索引后。 |
备注
嵌入式对象列表无法直接添加对象,因为这需要构造一个无主嵌入式对象,而这是不可能的。 这就是为什么必须使用 Add(T) 、 Insert (int, T) 和 this[int] 的原因。
在索引处设置对象将从列表中删除现有对象并取消对它的拥有。 由于无主嵌入式对象会自动删除,因此提交事务时,列表中包含的index
旧对象将被删除。