类 RealmObjectBase
可在Realm中持久化的任何对象的基础。 从此类继承的模型将由 Fody 编织器在编译时进行处理。 建议您改为从IRealmObject继承并使用 Realm 源生成器来生成模型。
命名空间: Realms
程序集:Realm.dll
语法
[Preserve(AllMembers = true)]
public abstract class RealmObjectBase : IRealmObjectBase, INotifyPropertyChanged, IReflectableType
属性
| 编辑本页 查看源代码BacklinksCount
获取通过对一或对多关系引用此对象的对象数量。
声明
[IgnoreDataMember]
public int BacklinksCount { get; }
属性值
类型 | 说明 |
---|---|
int | 引用此对象的对象数量。 |
备注
此属性是不可观察的,因此当其值发生更改时,不会触发PropertyChanged事件。
DynamicApi
获取包含此 RealmObjectBase 实例的动态 API 的对象。
声明
[IgnoreDataMember]
public DynamicObjectApi DynamicApi { get; }
属性值
类型 | 说明 |
---|---|
DynamicObjectApi | 包装此 RealmObject 的Realms.Dynamic实例。 |
IsFrozen
获取一个值,该值指示此对象是否已冻结。 冻结对象具有不可变性,并且在写入 Realm 时不会更新。 与活动对象不同,冻结对象可以跨线程使用。
声明
[IgnoreDataMember]
public bool IsFrozen { get; }
属性值
类型 | 说明 |
---|---|
bool |
|
另请参阅
IsManaged
获取一个值,该值指示对象是否在创建时或通过Add<T>(T, bool)与 Realm 关联。
声明
[IgnoreDataMember]
public bool IsManaged { get; }
属性值
类型 | 说明 |
---|---|
bool |
|
IsValid
获取一个值,该值指示此对象是否为托管对象,并表示数据库中的一行。 如果托管对象已从 Realm 中删除,则该对象不再有效,并且访问其属性将引发异常。 非托管对象始终被视为有效。
声明
[IgnoreDataMember]
public bool IsValid { get; }
属性值
类型 | 说明 |
---|---|
bool |
|
对象模式
获取ObjectSchema实例,该实例描述此对象所属的Realm如何看待此对象。
声明
[IgnoreDataMember]
public ObjectSchema? ObjectSchema { get; }
属性值
类型 | 说明 |
---|---|
对象模式 | 描述此对象的底层模式的属性集合。 |
Realm
获取此对象所属的Realm实例,如果是非托管实例,则为null
。
声明
[IgnoreDataMember]
public Realm? Realm { get; }
属性值
类型 | 说明 |
---|---|
Realm | 此对象所属的Realm 实例。 |
方法
| 编辑本页 查看源代码OnManaged()
当对象由 Realm 托管时调用。
声明
protected virtual void OnManaged()
备注
当物化托管对象或将非托管对象添加到 Realm 时,会调用此方法。 它可用于提供某些初始化逻辑,因为在调用构造函数时,尚不清楚对象是否为托管对象。
OnPropertyChanged(string)
当此类的属性发生更改时调用。
声明
protected virtual void OnPropertyChanged(string propertyName)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 属性名称 | 属性的名称。 |
备注
要调用此方法,您需要先订阅PropertyChanged 。 这可用于对当前对象的更改React,例如 为计算属性引发PropertyChanged 。
示例
class MyClass : RealmObject
{
public int StatusCodeRaw { get; set; }
public StatusCodeEnum StatusCode => (StatusCodeEnum)StatusCodeRaw;
protected override void OnPropertyChanged(string propertyName)
{
if (propertyName == nameof(StatusCodeRaw))
{
RaisePropertyChanged(nameof(StatusCode));
}
}
}
在这里,我们有一个计算属性依赖于一个持久化属性。 为了通知任何 PropertyChanged 订阅者StatusCode
已更改,我们重写 OnPropertyChanged(string) 并通过调用 RaisePropertyChanged(string) 手动引发 PropertyChanged 。
RaisePropertyChanged(string)
允许您引发 PropertyChanged 事件。
声明
protected void RaisePropertyChanged(string propertyName = "")
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 属性名称 | 已更改属性的名称。 如果未指定,我们将使用调用者名称。 |
ToString()
返回表示当前对象的字符串。
声明
public override string? ToString()
返回:
类型 | 说明 |
---|---|
字符串 | 表示当前对象的字符串。 |
覆盖
事件(Events)
| 编辑本页 查看源代码PropertyChanged
属性值更改时发生。
声明
public event PropertyChangedEventHandler? PropertyChanged
eventType
类型 | 说明 |
---|---|
PropertyChangedEventHandler |