Как передать в собственный класс project.Context ?

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 720
Благодарностей
1 377
Баллы
113
Приветствую.

В проекте имеются несколько собственных классов в общем коде. Один из них класс DB отвечающий за работу с базой данных.

В первом кубике проекта объект этого класса помещается в контект
Код:
DB db = new DB(project.Variables["db_host"].Value, project.Variables["db_user"].Value, project.Variables["db_pswd"].Value, project.Variables["db_database"].Value);
project.Context["db"] = db;
в последующих кубиках используется так
Код:
var db = project.Context["db"];
все работает

OK. Теперь представим что есть другой мой класс, который в конструкторе принимает project (иначе к нему просто не будет доступа из класса) ... вот тут-то контекст и перестает работать!

поясню на примере:

Код:
public class myClass
{
    private IZennoPosterProjectModel _project;
   
    public myClass (IZennoPosterProjectModel project)
    {
        _project = project;
    }

    public void myFunc(){
        // ТУТ ПЫТАЮСЬ ИСПОЛЬЗОВАТЬ _project.Context["db"] , НО НЕ РАБОТАЕТ!!
    }
}
Кто знает, есть ли возможность его все же как-то передать что бы работал???
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
вот тут-то контекст и перестает работать!
Хз, всё работает.
C#:
public class MyClass
{
    private IZennoPosterProjectModel _project;
   
    public MyClass (IZennoPosterProjectModel project)
    {
        _project = project;
    }
 
    public void MyFunc(){
        _project.SendWarningToLog(_project.Context["db"].ToString());
    }
}
Снип 1
C#:
project.Context["db"] = "dbdb";
Снип 2
C#:
MyClass a = new MyClass(project);
a.MyFunc();
 
  • Спасибо
Реакции: WebBot

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 720
Благодарностей
1 377
Баллы
113
вывод работает
_project.SendWarningToLog(_project.Context["db"].ToString());
результат
ZennoLab.OwnCode.DB

то есть формально то он передался, но вот внутри него что-то ломается и его методы (у меня это получение данных из БД) перестают работать

то есть при юзании в другом кубике я например пишу

var db = project.Context["db"];
var acc = db.getAll("SELECT FROM accounts WHERE status=1");
все работает как нужно

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 720
Благодарностей
1 377
Баллы
113
В общем проверил на простых классах все действительно работает!
А с моим классом DB не работает. Хотя если его просто юзать из контекста в других кубиках, то все отлично работает.

НО у меня класс DB юзает внешнюю dll ( MySql.Data.dll ) ... подразумеваю что дело может быть именно в этом.

p.s тестовыш шаб то я сделать могу, просто для этого нужно что бы у тех кто будет пробовать стоял OpenServer
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 720
Благодарностей
1 377
Баллы
113
Всё, нашел баг ... свой, а не зенкин =);-)
Забыл в одном месте закомментировать db.close() - строку отвечающую за разрыв соединения с БД. В этом месте она задана неявно, поэтому и пропустил видимо ... в результате к моменту когда нужно было юзать объект из контекста в другом своем классе, просто уже небыло соединения с БД, поэтому и методы не работали ))
 
  • Спасибо
Реакции: Yuriy Zymlex

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)