powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Странное поведение Reflection
4 сообщений из 4, страница 1 из 1
Странное поведение Reflection
    #39533467
КириллН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, коллеги!
Есть некий класс, заполняемый Json.NET:
десереализуемый класс
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
    public class SearchResult {
        private string objectId { get; set; }       // ИД объекта
 
        /// <summary>
        /// Идентификатор записи.
        /// </summary>
        [JsonIgnore] public string ID { get { return this.objectId; } }
    }


И есть метод вывода экземпляра объекта такого класса в текст:
вывод экземпляра
Код: c#
1.
2.
3.
4.
5.
6.
7.
            var members = obj.GetType().GetProperties().ToDictionary(
                p => p.Name,
                p => { var v = p.GetValue(obj, null); return v == null ? null : v; }
            );
            foreach (var member in members) {
                string item =  member.Key + ": " + member.Value;
            }



Так вот:
• если в классе поле objectId публичное (public), всё выводится ок, т.е. два member'а с одинаковыми значениями.
• если в классе поле objectId скрытое (private), то выводится только это поле, но с пустым значением.

Это так и должно быть или чудеса?
...
Рейтинг: 0 / 0
Странное поведение Reflection
    #39533472
КириллН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправлюсь по второму варианту:
• если в классе поле objectId скрытое (private), то выводится только публичное поле ID, но с пустым значением.
...
Рейтинг: 0 / 0
Странное поведение Reflection
    #39533485
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КириллН, подумайТе сами... так и должно быть... если вам нужно - см. чтонить наподобии
...
Рейтинг: 0 / 0
Странное поведение Reflection
    #39533487
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КириллН,

A property is considered public to reflection if it has at least one accessor that is public. Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static

Type.GetProperties (BindingFlags)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Странное поведение Reflection
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]