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

Рейтинг: 0Ответов: 2Опубликовано: 12.03.2015

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

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; }
    }
}

Ответы

▲ 1Принят

ну сделайте в лоб - в сеттере свойства BackUpDir модифицируйте соответствующие свойства для wFlash и wFtp

▲ 0

А какой смысл инициализировать объекты параметром, который в будущем будет меняться? Инициализируйте их ссылкой на родителя (SPO) и пусть они каждый раз получают BackupDir оттуда, где он и лежит. Как-то так:

public WorkFlash wFlash = new WorkFlash(this);

LocalFile file = new LocalFile(spo.BackupDir);