final class · System.Reflection

PropertyInfo

public final class PropertyInfo : MemberInfo

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

Tipo
final class
Espacio de nombres
System.Reflection
Ensamblado
System.Core
Acceso
public, final
Archivo fuente
Reflection.ant

Herencia

Clases base
Any MemberInfo PropertyInfo

Propiedades

Type PropertyType { get; }
#

read-only

bool CanRead { get; }
#

read-only

bool CanWrite { get; }
#

read-only

Métodos

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

override

Miembros privados e internos (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

Miembros heredados (11)

Código fuente

PropertyInfo en Antril, descompilado a partir de su 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