mirror of
https://github.com/AssetRipper/AssetRipper.git
synced 2025-12-11 20:15:29 +01:00
57 lines
1.8 KiB
C#
57 lines
1.8 KiB
C#
namespace AssetRipper.AssemblyDumper;
|
|
|
|
internal class ClassProperty : PropertyBase
|
|
{
|
|
public ClassProperty(PropertyDefinition definition, FieldDefinition? backingField, InterfaceProperty @base, GeneratedClassInstance @class) : base(definition)
|
|
{
|
|
BackingField = backingField;
|
|
if (!IsInjected && backingField?.Name is not null)
|
|
{
|
|
ReleaseNode = @class.Class.ReleaseRootNode?.TryGetSubNodeByName(backingField.Name);
|
|
EditorNode = @class.Class.EditorRootNode?.TryGetSubNodeByName(backingField.Name);
|
|
if (ReleaseNode is null && EditorNode is null)
|
|
{
|
|
throw new Exception($"Failed to find node: {@class.Name}.{backingField.Name} on {@class.VersionRange}");
|
|
}
|
|
}
|
|
Class = @class;
|
|
Base = @base;
|
|
Base.AddImplementation(this);
|
|
}
|
|
|
|
public UniversalNode? ReleaseNode { get; }
|
|
|
|
public UniversalNode? EditorNode { get; }
|
|
|
|
public string? OriginalFieldName => ReleaseNode?.OriginalName ?? EditorNode?.OriginalName;
|
|
|
|
public FieldDefinition? BackingField { get; }
|
|
|
|
public InterfaceProperty Base { get; }
|
|
|
|
public GeneratedClassInstance Class { get; }
|
|
|
|
[MemberNotNullWhen(false, nameof(BackingField))]
|
|
public bool IsAbsent => BackingField is null;
|
|
|
|
[MemberNotNullWhen(true, nameof(BackingField))]
|
|
public bool IsPresent => !IsAbsent;
|
|
|
|
[MemberNotNullWhen(true, nameof(ReleaseNode))]
|
|
[MemberNotNullWhen(false, nameof(EditorNode))]
|
|
public bool IsReleaseOnly => ReleaseNode is not null && EditorNode is null;
|
|
|
|
[MemberNotNullWhen(false, nameof(ReleaseNode))]
|
|
[MemberNotNullWhen(true, nameof(EditorNode))]
|
|
public bool IsEditorOnly => ReleaseNode is null && EditorNode is not null;
|
|
|
|
[MemberNotNullWhen(true, nameof(BackingField))]
|
|
public bool HasBackingFieldInDeclaringType
|
|
{
|
|
get
|
|
{
|
|
return BackingField is not null && BackingField.DeclaringType == Class.Type;
|
|
}
|
|
}
|
|
}
|