final class · System.Reflection

PropertyInfo

public final class PropertyInfo : MemberInfo

A property: its type, and its value through its accessors.

Kind
final class
Namespace
System.Reflection
Assembly
System.Core
Access
public, final
Source file
Reflection.ant

Inheritance

Base classes
Any MemberInfo PropertyInfo

Properties

Type PropertyType { get; }
#

read-only

bool CanRead { get; }
#

read-only

bool CanWrite { get; }
#

read-only

Methods

GetValue(any? target) : any?
#
SetValue(any? target, any? value)
#
override ToString() : str
#

override

Private and internal members (5)

readonly Type propertyType
#

private

readonly i32 getter
#

private

readonly i32 setter
#

private

new(Type declaring, str name, i32 flags, TypeDescriber describer, i32 index, Type propertyType, i32 getter, i32 setter)
#

internal

override AttributeKey() : i32
#

internal override

Inherited members (11)

Source

PropertyInfo as Antril, decompiled from its Larva HIR.

System.Reflection.PropertyInfo.ant
// System.Reflection.PropertyInfo — System.Core (decompiled from Larva HIR)

import System;

into namespace System.Reflection
{
	/// A property: its type, and its value through its accessors.
	public final class PropertyInfo : MemberInfo
	{
		readonly Type propertyType;
		readonly i32 getter;
		readonly i32 setter;

		internal:
			new(Type declaring, str name, i32 flags, TypeDescriber describer, i32 index, Type propertyType, i32 getter, i32 setter) : base(declaring, name, flags, describer, index)
			{
				this.propertyType = propertyType;
				this.getter = getter;
				this.setter = setter;
			}

			override AttributeKey() : i32 => 3000000 + Index;

		public:
			GetValue(any? target) : any?
			{
				if (getter < 0)
					throw new NotSupportedError(Name + " has no getter");
				return Describer.Invoke(getter, target, []);
			}

			SetValue(any? target, any? value)
			{
				if (setter < 0)
					throw new NotSupportedError(Name + " has no setter");
				Describer.Invoke(setter, target, [value]);
			}

			override ToString() : str => propertyType.FullName + " " + Name;

			Type PropertyType
			{
				get => propertyType;
			}

			bool CanRead
			{
				get => getter >= 0;
			}

			bool CanWrite
			{
				get => setter >= 0;
			}
	}
}
Esc