Прочитать на английском

Поделиться через


Type.GetProperty Метод

Определение

Получает указанное свойство текущего класса Type.

Перегрузки

GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Ищет свойство с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки.

GetProperty(String, Type, Type[], ParameterModifier[])

Ищет заданное открытое свойство, параметры которого соответствуют указанным типам аргументов и модификаторам.

GetProperty(String, Type[])

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.

GetProperty(String, Type, Type[])

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.

GetProperty(String, BindingFlags)

Ищет указанное свойство, используя заданные ограничения привязки.

GetProperty(String)

Выполняет поиск открытого свойства с заданным именем.

GetProperty(String, Type)

Выполняет поиск открытого свойства с заданным именем и типом возвращаемого значения.

GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Ищет свойство с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки.

C#
public System.Reflection.PropertyInfo? GetProperty (string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, Type? returnType, Type[] types, System.Reflection.ParameterModifier[]? modifiers);
C#
public System.Reflection.PropertyInfo GetProperty (string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers);

Параметры

name
String

Строка, содержащий имя искомого свойства.

bindingAttr
BindingFlags

Побитовое сочетание значений перечисления, указывающих способ проведения поиска.

-или-

Default для возврата null.

binder
Binder

Объект, определяющий набор свойств и разрешающий привязку, что может включать выбор перегруженных методов, приведение типов аргументов и вызов члена с помощью отражения.

-или-

Пустая ссылка (Nothing в Visual Basic) для использования свойства DefaultBinder.

returnType
Type

Возвращаемый тип свойства.

types
Type[]

Массив объектов Type , предоставляющий число, порядок и тип параметров искомого индексированного свойства.

-или-

Пустой массив объектов типа Type (то есть Type[] types = new Type[0]), если требуется получить неиндексированное свойство.

modifiers
ParameterModifier[]

Массив объектов ParameterModifier, представляющих атрибуты, связанные с соответствующим элементом в массиве types. Связыватель по умолчанию не обрабатывает этот параметр.

Возвращаемое значение

Объект, предоставляющий свойство, которое соответствует указанным требованиям, если такое свойство найдено; в противном случае возвращается null.

Реализации

Исключения

Найдено несколько свойств с указанным именем и соответствующих указанным ограничениям привязки.

name имеет значение null.

-или-

types имеет значение null.

Массив types является многомерным.

-или-

Массив modifiers является многомерным.

-или-

types и modifiers имеют разную длину.

Элемент types имеет значение null.

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для Type.GetProperty.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetProperty(String, Type, Type[], ParameterModifier[])

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Ищет заданное открытое свойство, параметры которого соответствуют указанным типам аргументов и модификаторам.

C#
public System.Reflection.PropertyInfo? GetProperty (string name, Type? returnType, Type[] types, System.Reflection.ParameterModifier[]? modifiers);
C#
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers);

Параметры

name
String

Строка, содержащая искомое имя открытого свойства.

returnType
Type

Возвращаемый тип свойства.

types
Type[]

Массив объектов Type , предоставляющий число, порядок и тип параметров искомого индексированного свойства.

-или-

Пустой массив объектов типа Type (то есть Type[] types = new Type[0]), если требуется получить неиндексированное свойство.

modifiers
ParameterModifier[]

Массив объектов ParameterModifier, представляющих атрибуты, связанные с соответствующим элементом в массиве types. Связыватель по умолчанию не обрабатывает этот параметр.

Возвращаемое значение

Объект, представляющий открытое свойство, которое соответствует указанным требованиям, если такое свойство найдено; в противном случае возвращается null.

Реализации

Исключения

Найдено несколько свойств с указанным именем и соответствующих указанным типам аргументов и модификаторам.

name имеет значение null.

-или-

types имеет значение null.

Массив types является многомерным.

-или-

Массив modifiers является многомерным.

-или-

types и modifiers имеют разную длину.

Элемент types имеет значение null.

Примеры

В следующем примере получается объект , соответствующий TypeMyPropertyClass, и индексированное свойство этого класса извлекается с помощью аргументов, переданных GetProperty в метод .

C#
using System;
using System.Reflection;

public class MyPropertyClass
{
    private readonly int [,] _myPropertyArray = new int[10,10];
    // Declare an indexer.
    public int this [int i,int j]
    {
        get
        {
            return _myPropertyArray[i,j];
        }
        set
        {
            _myPropertyArray[i,j] = value;
        }
    }
}

public class MyTypeClass
{
    public static void Main()
    {
        try
        {
            Type myType=typeof(MyPropertyClass);
            Type[] myTypeArray = new Type[2];

            // Create an instance of the Type array representing the number, order
            // and type of the parameters for the property.
            myTypeArray.SetValue(typeof(int),0);
            myTypeArray.SetValue(typeof(int),1);

            // Search for the indexed property whose parameters match the
            // specified argument types and modifiers.
            PropertyInfo myPropertyInfo = myType.GetProperty("Item",
                typeof(int),myTypeArray,null);
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name +
                " has a property type of " + myPropertyInfo.PropertyType);
         }
        catch(Exception ex)
        {
            Console.WriteLine("An exception occurred " + ex.Message);
        }
    }
}

Комментарии

Свойство считается открытым для отражения, если у него есть хотя бы один открытый метод доступа. В противном случае свойство считается частным, и для его получения необходимо использовать BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (в Visual Basic объединить значения с помощью ).Or

Хотя связыватель по умолчанию не обрабатывает ParameterModifier ( modifiers параметр ), абстрактный System.Reflection.Binder класс можно использовать для записи пользовательского связывателя, обрабатывающего modifiers. ParameterModifier используется только при вызове через COM-взаимодействие, и обрабатываются только параметры, передаваемые по ссылке.

В поиске name учитывается регистр. Поиск включает свойства public static и public instance.

Если текущий Type тип представляет сконструированный универсальный тип, этот метод возвращает PropertyInfo с параметрами типа, замененными соответствующими аргументами типа.

Если текущий Type объект представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск свойств ограничения класса.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetProperty(String, Type[])

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.

C#
public System.Reflection.PropertyInfo? GetProperty (string name, Type[] types);
C#
public System.Reflection.PropertyInfo GetProperty (string name, Type[] types);

Параметры

name
String

Строка, содержащая искомое имя открытого свойства.

types
Type[]

Массив объектов Type, предоставляющий число, порядок и тип параметров искомого индексированного свойства.

-или-

Пустой массив объектов типа Type (то есть Type[] types = new Type[0]), если требуется получить неиндексированное свойство.

Возвращаемое значение

Объект, представляющий открытое свойство, параметры которого соответствуют указанным типам аргументов, если таковые найдены; в противном случае — null.

Реализации

Исключения

Найдено несколько свойств с указанным именем и соответствующих указанным типам аргументов.

name имеет значение null.

-или-

types имеет значение null.

Массив types является многомерным.

Элемент types имеет значение null.

Примеры

В следующем примере извлекается Type объект определяемого пользователем класса, извлекается свойство этого класса и отображается имя и тип свойства в соответствии с аргументами, передаваемыми в GetProperty.

C#

using System;
using System.Reflection;

class MyClass3
{
    private readonly int[,] _myArray = { { 1, 2 }, { 3, 4 } };
    // Declare an indexer.
    public int this[int i, int j]
    {
        get
        {
            return _myArray[i, j];
        }
        set
        {
            _myArray[i, j] = value;
        }
    }
}

public class MyTypeClass3
{
    public static void Main(string[] args)
    {
        try
        {
            // Get the Type object.
            Type myType = typeof(MyClass3);
            Type[] myTypeArr = new Type[2];

            // Create an instance of a Type array.
            myTypeArr.SetValue(typeof(int), 0);
            myTypeArr.SetValue(typeof(int), 1);

            // Get the PropertyInfo object for the indexed property Item, which has two integer parameters.
            PropertyInfo myPropInfo = myType.GetProperty("Item", myTypeArr);

            // Display the property.
            Console.WriteLine("The {0} property exists in MyClass3.",
                myPropInfo.ToString());
        }
        catch (NullReferenceException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Source : {0}", e.Source);
            Console.WriteLine("Message : {0}", e.Message);
        }
    }
}

Комментарии

Свойство считается открытым для отражения, если у него есть хотя бы один открытый метод доступа. В противном случае свойство считается частным, и для его получения необходимо использовать BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (в Visual Basic объединить значения с помощью ).Or

В поиске name учитывается регистр. Поиск включает свойства public static и public instance.

Если текущий Type тип представляет сконструированный универсальный тип, этот метод возвращает PropertyInfo с параметрами типа, замененными соответствующими аргументами типа.

Если текущий Type объект представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск свойств ограничения класса.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetProperty(String, Type, Type[])

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.

C#
public System.Reflection.PropertyInfo? GetProperty (string name, Type? returnType, Type[] types);
C#
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType, Type[] types);

Параметры

name
String

Строка, содержащая искомое имя открытого свойства.

returnType
Type

Возвращаемый тип свойства.

types
Type[]

Массив объектов Type , предоставляющий число, порядок и тип параметров искомого индексированного свойства.

-или-

Пустой массив объектов типа Type (то есть Type[] types = new Type[0]), если требуется получить неиндексированное свойство.

Возвращаемое значение

Объект, представляющий открытое свойство, параметры которого соответствуют указанным типам аргументов, если таковые найдены; в противном случае — null.

Реализации

Исключения

Найдено несколько свойств с указанным именем и соответствующих указанным типам аргументов.

name имеет значение null.

-или-

types имеет значение null.

Массив types является многомерным.

Элемент types имеет значение null.

Комментарии

Свойство считается открытым для отражения, если у него есть хотя бы один открытый метод доступа. В противном случае свойство считается частным, и для его получения необходимо использовать BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (в Visual Basic объединить значения с помощью ).Or

В поиске name учитывается регистр. Поиск включает свойства public static и public instance.

Если текущий Type тип представляет сконструированный универсальный тип, этот метод возвращает PropertyInfo с параметрами типа, замененными соответствующими аргументами типа.

Если текущий Type объект представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск свойств ограничения класса.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetProperty(String, BindingFlags)

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Ищет указанное свойство, используя заданные ограничения привязки.

C#
public System.Reflection.PropertyInfo? GetProperty (string name, System.Reflection.BindingFlags bindingAttr);
C#
public System.Reflection.PropertyInfo GetProperty (string name, System.Reflection.BindingFlags bindingAttr);

Параметры

name
String

Строка, содержащий имя искомого свойства.

bindingAttr
BindingFlags

Побитовое сочетание значений перечисления, указывающих способ проведения поиска.

-или-

Default для возврата null.

Возвращаемое значение

Объект, предоставляющий свойство, которое соответствует указанным требованиям, если такое свойство найдено; в противном случае возвращается null.

Реализации

Исключения

Найдено несколько свойств с указанным именем и соответствующих указанным ограничениям привязки.

name имеет значение null.

Примеры

В следующем примере извлекается тип определяемого пользователем класса, извлекается свойство этого класса и отображается имя свойства в соответствии с указанными ограничениями привязки.

C#

using System;
using System.Reflection;

class MyClass2
{
    // Declare MyProperty.
    public int MyProperty { get; set; }
}

public class MyTypeClass2
{
    public static void Main(string[] args)
    {
        try
        {
            // Get Type object of MyClass2.
            Type myType = typeof(MyClass2);

            // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
            PropertyInfo myPropInfo = myType.GetProperty(
                "MyProperty",
                BindingFlags.Public | BindingFlags.Instance
                );

            // Display Name property to console.
            Console.WriteLine("{0} is a property of MyClass2.", myPropInfo.Name);
        }
        catch (NullReferenceException e)
        {
            Console.WriteLine("MyProperty does not exist in MyClass2." + e.Message);
        }
    }
}

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetProperty(String)

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Выполняет поиск открытого свойства с заданным именем.

C#
public System.Reflection.PropertyInfo? GetProperty (string name);
C#
public System.Reflection.PropertyInfo GetProperty (string name);

Параметры

name
String

Строка, содержащая искомое имя открытого свойства.

Возвращаемое значение

Объект, представляющий открытое свойство с заданным именем, если такое свойство есть, и null, если такого свойства нет.

Реализации

Исключения

Найдено несколько свойств с указанным именем.

name имеет значение null.

Примеры

В следующем примере извлекается Type объект определяемого пользователем класса, извлекается свойство этого класса и отображается имя свойства.

C#
using System;
using System.Reflection;

class MyClass1
{
    // Declare MyProperty.
    public int MyProperty { get; set; }
}

public class MyTypeClass1
{
    public static void Main(string[] args)
    {
        try
        {
            // Get the Type object corresponding to MyClass1.
            Type myType = typeof(MyClass1);

            // Get the PropertyInfo object by passing the property name.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty");

            // Display the property name.
            Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.Name);
        }
        catch (NullReferenceException e)
        {
            Console.WriteLine("The property does not exist in MyClass1." + e.Message);
        }
    }
}

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для Type.GetProperty.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetProperty(String, Type)

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Выполняет поиск открытого свойства с заданным именем и типом возвращаемого значения.

C#
public System.Reflection.PropertyInfo? GetProperty (string name, Type? returnType);
C#
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType);

Параметры

name
String

Строка, содержащая искомое имя открытого свойства.

returnType
Type

Возвращаемый тип свойства.

Возвращаемое значение

Объект, представляющий открытое свойство с заданным именем, если такое свойство есть, и null, если такого свойства нет.

Реализации

Исключения

Найдено несколько свойств с указанным именем.

name имеет значение null, или returnType имеет значение null.

Примеры

В следующем примере определяется класс с одним свойством и извлекаются имя и тип свойства.

C#

using System;
using System.Reflection;

class MyPropertyTypeClass
{
    public string MyProperty1 { get; set; } = "Hello World.";
}

class TestClass
{
    static void Main()
    {
        try
        {
            Type myType = typeof(MyPropertyTypeClass);

            // Get the PropertyInfo object representing MyProperty1.
            PropertyInfo myStringProperties1 = myType.GetProperty("MyProperty1", typeof(string));

            Console.WriteLine("The name of the first property of MyPropertyTypeClass is {0}.",
                myStringProperties1.Name);
            Console.WriteLine("The type of the first property of MyPropertyTypeClass is {0}.",
                myStringProperties1.PropertyType);
        }
        catch (ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException :" + e.Message);
        }
        catch (AmbiguousMatchException e)
        {
            Console.WriteLine("AmbiguousMatchException :" + e.Message);
        }
        catch (NullReferenceException e)
        {
            Console.WriteLine("Source : {0}", e.Source);
            Console.WriteLine("Message : {0}", e.Message);
        }
        //Output:
        //The name of the first property of MyPropertyTypeClass is MyProperty1.
        //The type of the first property of MyPropertyTypeClass is System.String.
    }
}

Комментарии

Свойство считается открытым для отражения, если у него есть хотя бы один открытый метод доступа. В противном случае свойство считается частным, и для его получения необходимо использовать BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (в Visual Basic объединить значения с помощью ).Or

В поиске name учитывается регистр. Поиск включает свойства public static и public instance.

Если текущий Type тип представляет сконструированный универсальный тип, этот метод возвращает PropertyInfo с параметрами типа, замененными соответствующими аргументами типа.

Если текущий Type объект представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск свойств ограничения класса.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1