Пишу на D, но думаю программисты на C# мне смогут подсказать т.к. проблема не в языке, а в концепции использования классов.
В программе 3 класса:
parseConfig
seismoDownload
MySQL
работает программа так:
Создаем в main() и запускаем к выполнению экземпляр класса:
auto parseconfig = new parseConfig();
Если конфиг правильный и данные по ссылкам в нем доступны, то внутри внутри экземпляра класса parseConfig()
созадем экземпляр класса
auto seismodownload = new seismoDownload(emsc_csem);
парсим им данные и теперь нам нужно как-то загрузить их в БД. После успешного парсинга я создаю:
auto mysql = new MySQL(parseconfig);
И тут возникает проблема.
1. Я мог бы создать экземпляр подключения к БД в main, но в этом бы не было смысла т.к. не факт, что данные будут доступны, а если их нет, то экземпляр класса создавать не надо.
2. Из экземпляра класса seismoDownload я не могу получить доступ к объявленному в main parseConfig
Как мне быть если в экземпляре класса для работы с БД (загрузка туда данных) мне нужны данные от двух других классов. Я же не могу конструктор вызвать в одном из них, т.к. нужны еще данные от второго класса.
Вот как это в коде выглядит:
void main()
{
auto parseconfig = new parseConfig();
}
class parseConfig
{
// Вот эти данные я получаю из конфига
string dbname;
string dbuser;
string dbpass;
string dbhost;
string dbport;
if (checkLinkCode(emsc_csem) == 200)
{
auto seismodownload = new seismoDownload(emsc_csem);
seismodownload.parse();
}
}
class seismoDownload
{
auto mysql = new MySQL(parseconfig); // the problem is here!
eqs // предположим я получил данные в эту переменную
}
class MySQL
{
this(parseConfig parseconfig)
{
// мне нужны конфиги из parseconfig и eqs. В какой момент и как мне их сюда передать?
}
}