| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > C# WinApp, запись в форму из стороннего класса |
| Автор: Rockie 9.11.2015, 21:32 | ||||||
| Привет! я хочу сделать класс-логгер, который можно бы было подключать к разным проектам. К примеру чтобы и в консольном приложении и в WinApp можно бы было написать к примеру
Вообще у меня был класс логгера который писал к примеру в консоль, ULS, в текстовый файл.. я просто закомментачивал ненужные методы. но cейчас хочу его прикрутить и в WinApp и наконец-то сделать правильно. У меня есть рабочий вариант, который пишет из класса логгера в текстбокс формы(отбросим то что при записи на форум надо вызывать InvokeRequired, т.к. пример учебный) Это класс логгера. Он содержит в себе экземпляр формы и конструктор, который инстанцирует эту форму(экземпляр логгера мы создадим на форме)
А вот собсно форма. Форма содержит свойство "LogStream", которое в Set пишет в контрол-текстбокс. А сторонний класс может к этому свойству достучаться. Ну и собсно всё, по кнопке вызывается Message() стороннего класса-логгера, который пишет на форму:
Как сделать это правильнее - в данном варианте непонятно что делать для консольного приложения - закомментачивать конструктор с формой чтоли?.. и другой вопрос - если у меня ещё один сторонний класс, как на рисунке - как мне реализовывать логгер из него? тоже передавать форму и туда, бред какой-то.. ![]() |
| Автор: chupachups 10.11.2015, 12:32 | ||||
Нужно использовать интерфейсы. Для логера:
Для форм, консоли, файлов и прочего:
Для каждого "слушателя" логов реализуешь интерфейс ILogListner и кидаешь его в логер - AddListner(ILogListner listner). Логер должен иметь коллекцию слушателей и когда логеру говорят WriteMessage(string message) - он пробегает по всем слушателям и вызывает у них ProcessMessage(string message) Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/C-WinApp-zapis-v-formu-iz-storonnego-klassa-id5640e6deae201568208b4567#findElement_E7045_5641b9c4ae20153c518b4987_0 |
| Автор: infarch 11.11.2015, 11:48 |
| Вы лучше изучите для начала что-нибудь из готовых популярных логеров. NLog, Log4net... Если вам чисто для фана, то попробуйте свой логер сделать по аналогии. Если же вам нужно готовое рабочее решение то возьмите один из них и не парьтесь. |
| Автор: Rockie 12.11.2015, 08:54 | ||
infarch, ну мне и то и другое - чтобы один раз уже разобраться, и чтобы юзать в своих проектах. Часто возникает ситуация когда сначала логика пишется в консоли, а потом его надо запихнуть к примеру в asp.net вебчасть, или ещё куда.. Спасибо! chupachups, воо... Спасибо!! я если что ещё спрошу тут, может посоветуете правильно ли делаю.. |