Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
NapalmRain
42 / 42 / 6
Регистрация: 18.05.2010
Сообщений: 671
1

Отслеживание изменения значения свойства класса

22.01.2018, 16:23. Просмотров 555. Ответов 4
Метки нет (Все метки)

Доброго всем времени суток!

Есть некий класс, которых хранит свойства в виде
C#
1
2
3
4
5
class SomeClass {
    public bool SomeProp1{ get; set; }
    public bool SomeProp2{ get; set; }
    public bool SomeProp3{ get; set; }
}
В некоторых участках программы значения меняются программно, заранее неизвестно какое именно значение будет изменено, поэтому это делается через
C#
1
PropertyInfo
и затем
C#
1
SetValue
В этот момент времен нужно отслеживать, что кто-то изменил свойство.
Для логирования происходящего.

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

Поэтому я хотел бы узнать, существует ли метод автоматического отслеживания события изменения свойства?

Гугл, увы, не помог.

Заранее благодарю за любой совет!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2018, 16:23
Ответы с готовыми решениями:

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

Отслеживание изменения значения переменной
Как мне сделать так, что бы при изменении переменной, выполнялась функция из другого класса и после...

Отслеживание изменения значения переменной
Привет! Возникла такая задача - есть адрес переменной в памяти какого-то процесса. Мне нужно...

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

Получение значения по имени свойства класса
Доброго времени суток. Мне необходимо реализовать, чтобы можно было получить значение свойства...

4
Usaga
Эксперт .NET
5727 / 3959 / 706
Регистрация: 21.01.2016
Сообщений: 15,545
Завершенные тесты: 2
22.01.2018, 16:35 2
Цитата Сообщение от NapalmRain Посмотреть сообщение
В некоторых участках программы значения меняются программно, заранее неизвестно какое именно значение будет изменено, поэтому это делается через
Очень и очень странное решение.

Вы могли бы реализовать логироваение в сами свойствах (собственно, для размещения логики свойства и были придуманы), могли бы реализовать интерфейс INotifyPropertyChanged и подписывать логгер на него, могли бы завернуть класс в класс-декоратор.

Вариантов много.
1
OwenGlendower
Супер-модератор
Эксперт .NET
10601 / 9111 / 3885
Регистрация: 17.03.2014
Сообщений: 18,240
Записей в блоге: 1
Завершенные тесты: 2
22.01.2018, 16:38 3
NapalmRain, объяви свойства полностью и размести код логирования в setter-ах.
1
stele
27 / 27 / 12
Регистрация: 29.02.2016
Сообщений: 101
22.01.2018, 16:39 4
Так в блоке set и происходит обработка измения.
C#
1
2
3
4
5
6
7
8
9
10
private bool _SomeProp1;
public bool SomeProp1
{ 
    get {return _SomeProp1; }
    set
    {
        // тут логирование или создание события или вообще ещё что-нибудь
        _SomeProp1 = value;
    } 
}
1
NapalmRain
42 / 42 / 6
Регистрация: 18.05.2010
Сообщений: 671
22.01.2018, 16:52  [ТС] 5
Usaga, там сложная логика, диктует её архитектура приложение.
Если вкратце - это игра и свойства должны меняться в зависимости от действия игрока, какие он может выполнить действия и к чему это приведёт диктуется гейм-дизайнером и заносится в базу данных.
Я выбрал такое решение чтоб сделать код максимально динамическим и не прописывать варианты на все возможные действия.
В любом случае благодарю за ответ. с INotifyPropertyChanged я не смог подружиться, так как всё это добро работает на .net 2
(наверное стоило об этом упомянуть, мой косяк)
Что касается прописывания в сет'ах.
Я старался этого избегать, так как это значительно увеличивает код, а я максимально стремлюсь к лаконичности.
Но, судя по всему, другого варианта особо нет.
Так что, OwenGlendower и stele, благодарю вас так же за совет!
0
22.01.2018, 16:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2018, 16:52

Отслеживание изменения файлов.
Подскажите пожалуйста, как можно отследить время изменения файлов в папке, учитывая, что их там...

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

Отслеживание изменения переменной
Здравствуйте! Вопрос немного ламерский. Есть trackBar. Есть значение переменной, допустим, а....


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

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

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