Тема: Організація правильної взаємодії між класами

Є 4 класи

DataBaseSettings
{
    public string connectionString;
    public string name;
}

public class DataBaseLastQuery
{
    public string query;
}

public class DataBase_WorkSettings
{
    public List<DataBaseSettings> dataBaseSettings = new List<DataBaseSettings>();
    public DataBaseLastQuery dataBaseLastQuery = new DataBaseLastQuery();
}

public class SettingsSave
{
    public DataBase_WorkSettings dataBase_WorkSettings;

    public delegate void SettingsSaveHandler();

    public event SettingsSaveHandler NewDataAdded;
    ....
}

Класи DataBaseSettings, DataBaseLastQuery, DataBase_WorkSettings потрібні для серіалізації/десеріалізації JSON

Клас SettingsSave відповідає за ввід/вивід інформації через поле public DataBase_WorkSettings dataBase_WorkSettings;

Потрібно зробити подію NewDataAdded яка буде викликатися кожного разу коли щось записалося у об'єкти DataBaseSettings, DataBaseLastQuery, DataBase_WorkSettings класів. Як це зробити ?

2

Re: Організація правильної взаємодії між класами

Зробити всі ці поля приватними і додати гетери та сетери. В сетери дописати NewDataAdded. В C#, якщо не помиляюся, це заведено робити через властивості (properties).

3

Re: Організація правильної взаємодії між класами

Можливо вам буде корисно погуглити про такі штуки. Вони можуть бути вам корисні а можуть і ні в залежності що ви хочете зробити.  Скоріше всього ні :D

ObservableCollection - колекція яка генерить івенти коли помінялась.
INotifyPropertyChanged - якщо ви реалізуєте цей інтерфейс в вашому класі, інші класи можуть бачити коли ваш помінявся.
DispatchProxy і взагалі різні концепти як зробити proxy в с#, можливо глянути в сторону interceptors різних контейнерів.
Можна також почитати про AOP і можливо там буде якийсь шаблон який вам підійде.
fody/postsharp - це тули які можуть самі додавати функціональність в класи в тому числі і INotifyPropertyChanged.