Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Botovin
0 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 18

Оповестить члены класса об изменении свойства (не событием)

12.03.2015, 10:18. Показов 1523. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько классов. В "главном" классе (class SPO) есть свойство BackupDir, это общий каталог для бэкапов. В SPOесть два члена класса WorkFlash и WorkFtp в которых в свою очередь есть члены класса LocalFile. Вот в LocalFile формируется конечный каталог хранения бэкапов (backupDir + Path.DirectorySeparatorChar+ DateTime.Now.ToShortDateString). Т.о. если в SPOсвойство BackUpDir изменится то остальные члены об этом не узнают так как уже были проинициализированы со старым каталогом. Как LocalFile, да и не только, можно оповещать об этих изменениях?

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
private class LocalFile
{
    private string ArchiveDir;
    public LocalFile(string backupDir)
    {               //C:\backup\25.12.2015
        ArchiveDir = backupDir + Path.DirectorySeparatorChar+ DateTime.Now.ToShortDateString;
    }
}
 
public class WorkFlash
{
    public WorkFlash()
    {
 
    }
    LocalFile file = new LocalFile(BackupDir);
 
}
public class WorkFtp
{
 
}
 
public class SPO
{
    string backupDir = @"C:\backup";
 
    public WorkFlash wFlash = new WorkFlash();
    public WorkFtp wFtp = new WorkFtp();
 
    public string BackUpDir
    {
        set { backupDir = value; }
        get { return backupDir; }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2015, 10:18
Ответы с готовыми решениями:

Как оповестить клиентов СУБД об изменении данных?
Есть клиент-серверное приложение. Delphi + MySQL 5.5.9. Как реализовать оповещение (перечитать данные) всех клиентов присоединённых к...

StackOverflowException при изменении свойства класса
Привет, народ. Простенький класс со свойством, в упор не вижу ошибки. Помогите :) class A { public int workExp { ...

класс «Строка» (данные-члены класса – строчка, функции-члены класса – операции)
Помогите пожалйуста с реализацией программы... Реализовать класс «Строка» (данные-члены класса – строчка (указатель на массив, ...

4
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
12.03.2015, 10:26
Лучший ответ Сообщение было отмечено Botovin как решение

Решение

Ну вот зачем вам такие сложные конструкции для таких элементарных вещей?
Создайте статический класс Settings, и храните там путь к папке бекапа. Остальные классы в момент чтения или записи файла будут брать директорию из Settings.
0
 Аватар для Botovin
0 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 18
12.03.2015, 10:34  [ТС]
Не хочется так, хочу покрасивее если возможно
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
12.03.2015, 11:06
А почему не событием? События как раз для этого и придуманы - для оповещения.
0
 Аватар для Botovin
0 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 18
12.03.2015, 11:14  [ТС]
Цитата Сообщение от tezaurismosis Посмотреть сообщение
А почему не событием? События как раз для этого и придуманы - для оповещения.
Ну можно и событием, только кажется события тут будут лишними. По крайней мере в данном конкретном случае. Я решил вопрос так: в сеттинге свойства BackUpDir обращаюсь к членам класса и меняю им свойства на новое значение.
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
public class SPO
    {
        public SPO()
        {
            wFlash.file.ArchiveDir = backupDir;
        }
        
        string backupDir = @"D:\TempBackup\";
        
        private List<WorkFlash> wFlash = new WorkFlash();
        private List<WorkFtp> wFtp = new WorkFtp();
        
        
        public string BackUpDir
        {
            set { backupDir = value;
                  wFlash.file.ArchiveDir = backupDir;
            }
            get { return backupDir; }
        }
        
        
        
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2015, 11:14
Помогаю со студенческими работами здесь

Как сделать, чтобы при изменении значения свойства, созданного класса, на экране произошли изменения?
Я создал класс class TFigure { private: int FKol; public: __property int Kol = {read = FKol, write = FKol}; //другие...

Изменить свойства одного контролла событием другого
Есть 2 пользовательских контрола class Timeline : Control {} class Bar : Control {} Затем в коде формы создаются по одному...

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

Изменение класса css - сделать событием
Здравствуйте, вкратце о проблеме : есть кнопка, у которой в определенный момент меняется css класс, можно ли это сделать событием? Пример -...

Наследование от protected класса: будут ли public члены класса Б доступны классу А
Добрый день! Если пронаследовать public класс А от protected класса Б, будут ли public члены класса Б доступны классу А, и доступны...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru