Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/39: Рейтинг темы: голосов - 39, средняя оценка - 4.54
12 / 12 / 3
Регистрация: 30.11.2011
Сообщений: 76
1

Получить значение поля с помощью рефлексии (отражения)

24.02.2012, 00:01. Просмотров 7462. Ответов 2
Метки нет (Все метки)


Каким образом с помощью рефлексии получить значение поля?

Вроде как с помощью этих вот команд:

C#
1
2
3
4
5
DLLType.GetField(имя поля).GetValue();
 
или
 
DLLType.GetField(имя поля).GetValueDirect();
Но я никак не пойму, что нужно указывать в качестве параметров для этих методов.

FAQ по отражениям на форуме читал, но именно про поля не видел, а по ассоциации со свойствами, например, сделать не получается
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2012, 00:01
Ответы с готовыми решениями:

Как получить значение по имени кроме рефлексии?
Добрый день. В программе есть необходимость получать значения класса по заданному имени. В...

С помощью рефлексии нужно вызвать метод динамически подключенной библиотеки
С помощью рефлексии нужно вызвать метод динамически подключенной библиотеки. Делаю так: ...

Как получить значение поля из tableBindingSource?
Имеется combo , источником данных является tableBindingSource. Как , выбрав нужную строку в combo...

Получить значение поля из переменной типа DataTable
Всем привет. Такая ситуация, в dtpos пишется таблица Position, ну там запрос конечно некислый все...

2
Почетный модератор
Эксперт .NET
8691 / 3643 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
24.02.2012, 00:29 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Reflection;
 
namespace ConsoleApplication30
{
    class Program
    {
        class Test
        {
            public Test ( )
            {
                privateField = 7;
            }
 
            int privateField;
            public double publicField;
 
            public override string ToString ( )
            {
                return string.Format(
                    "privateField: {0}, publicField: {1}",
                    privateField,
                    publicField
                    );
            }
        }
 
        static void Main ( )
        {
            var test = new Test() {
                publicField = 10.8
            };
 
            var privateField = typeof( Test ).GetField( "privateField", BindingFlags.NonPublic | BindingFlags.Instance );
            var publicField  = typeof( Test ).GetField( "publicField", BindingFlags.Public | BindingFlags.Instance );
 
            Console.WriteLine(
                "Reflection, get fields values\r\n\tprivateField: {0}\r\n\tpublicField: {1}",
                (int)privateField.GetValue( test ),
                (double)publicField.GetValue( test )
                );
 
            privateField.SetValue( test, 35 );
            publicField.SetValue( test, double.MaxValue );
 
            Console.WriteLine(
                "Reflection, fields values after 'set' method\r\n\tprivateField: {0}\r\n\tpublicField: {1}",
                (int)privateField.GetValue( test ),
                (double)publicField.GetValue( test )
                );
 
            Console.ReadLine();
        }
 
    }
}
2
8 / 8 / 2
Регистрация: 30.01.2015
Сообщений: 134
03.06.2020, 21:51 3
Ну подскажите плиз. Как с помощью рефлексии получить значение свойства.

Получаю в методе (Object p)

C#
1
2
3
4
5
6
7
8
9
10
//Получаю тип
Type type = p.GetType();
 
//Получаю свойства
var properties = type.GetProperties();
//Вывожу имя свойства и тип свойства.
foreach (var prop in properties)
{
    MessageBox.Show($"{prop.Name} = {prop.PropertyType} ");
}

Не могу понять как ковырнуть значение свойства?

Добавлено через 7 минут
Все нашел ответ. Кому интресно

C#
1
2
3
4
foreach (var prop in properties)
{
     object value = prop.GetValue(p, new object[] { });     
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2020, 21:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Не удается получить значение поля бд по известному другому полю
Здравствуйте! Вот часть кода. Нужно из бд аксесс изъять значение поля Namereg по значению поля...

Получить значение из таблицы с помощью LINQ
Начал изучать это направление, хочу при его помощи сопоставлять значение дропдаун и UserID с...

Получить значение гипертекстового поля из DataGridView
Необходимо получить текстовое значение гипертекстового поля любой колонки GRIDVIEW! Предположим в...

Как получить значение поля записи, только что внесенной в БД?
Я понимаю, что это уже где-то тут спрашивали, но я не нашел... Такая беда. Записываю в одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.